Тип any

Тип any в Go является псевдонимом для пустого интерфейса interface{} и представляет собой интерфейс, который не определяет ни одного метода. Это означает, что любой тип в Go автоматически удовлетворяет интерфейсу any, поскольку для его реализации не требуется реализовывать никакие методы. Первый параметр типа any может принимать значение любого типа, второй параметр также может быть любого типа, что делает any универсальным контейнером для произвольных данных.

Синтаксис

govar v any
v = 42
v = "hello"
v = []int{1, 2, 3}

Пример

Давайте создадим переменную типа any и присвоим ей значение целого числа:

gopackage main

import "fmt"

func main() {
  var x any
  x = 12345
  fmt.Println(x)
}

Результат выполнения кода:

go12345

Пример

Давайте создадим переменную типа any и присвоим ей значение строки:

gopackage main

import "fmt"

func main() {
  var s any
  s = "abcde"
  fmt.Println(s)
}

Результат выполнения кода:

go"abcde"

Пример

Давайте создадим переменную типа any и присвоим ей слайс целых чисел:

gopackage main

import "fmt"

func main() {
  var nums any
  nums = []int{1, 2, 3, 4, 5}
  fmt.Println(nums)
}

Результат выполнения кода:

go[1 2 3 4 5]

Пример

Давайте создадим слайс типа any и добавим в него значения разных типов:

gopackage main

import "fmt"

func main() {
  values := []any{42, "abcde", 3.14, true, []int{1, 2, 3}}
  for _, v := range values {
    fmt.Println(v)
  }
}

Результат выполнения кода:

go42
"abcde"
3.14
true
[1 2 3]

Смотрите также

  • пустой интерфейс interface{},
    который является синонимом типа any
  • утверждение типа type assertion,
    которое позволяет извлечь значение конкретного типа из any
  • переключатель типов type switch,
    который проверяет тип значения, хранящегося в any
  • конструкция comma-ok,
    которая безопасно проверяет соответствие типа