Тип any
Тип any в Go является псевдонимом для interface{}
и позволяет хранить значения любого типа данных. Он был введен
в версии Go 1.18 для упрощения кода и улучшения читаемости.
Тип any может принимать как простые типы (числа, строки),
так и сложные структуры данных. При работе с any необходимо
использовать утверждение типа (type assertion) для извлечения
исходного значения.
Синтаксис
var value any
Пример
Давайте объявим переменную типа any и присвоим ей
значение строки:
package main
import "fmt"
func main() {
var value any
value = "abcde"
fmt.Println(value)
}
Результат выполнения кода:
"abcde"
Пример
Давайте присвоим переменной типа any значение целого числа:
package main
import "fmt"
func main() {
var value any
value = 42
fmt.Println(value)
}
Результат выполнения кода:
42
Пример
Давайте присвоим переменной типа any значение слайса:
package main
import "fmt"
func main() {
var value any
value = []int{1, 2, 3, 4, 5}
fmt.Println(value)
}
Результат выполнения кода:
[1 2 3 4 5]
Пример
Давайте выполним утверждение типа для извлечения значения
из переменной типа any:
package main
import "fmt"
func main() {
var value any
value = "abcde"
str, ok := value.(string)
if ok {
fmt.Println("String value:", str)
} else {
fmt.Println("Not a string")
}
}
Результат выполнения кода:
"String value: abcde"
Пример
Давайте используем конструкцию switch для проверки
типа значения в переменной any:
package main
import "fmt"
func main() {
var value any
value = 42
switch v := value.(type) {
case string:
fmt.Println("String:", v)
case int:
fmt.Println("Integer:", v)
case []int:
fmt.Println("Slice of ints:", v)
default:
fmt.Println("Unknown type")
}
}
Результат выполнения кода:
"Integer: 42"
Смотрите также
-
тип
interface{},
который является исходным типом для any -
тип
comparable,
который ограничивает типы, поддерживающие сравнение -
тип
string,
который представляет строковые значения -
тип
int,
который представляет целочисленные значения