Тип any

Тип any в Go является псевдонимом для interface{} и позволяет хранить значения любого типа данных. Он был введен в версии Go 1.18 для упрощения кода и улучшения читаемости. Тип any может принимать как простые типы (числа, строки), так и сложные структуры данных. При работе с any необходимо использовать утверждение типа (type assertion) для извлечения исходного значения.

Синтаксис

govar value any

Пример

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

gopackage main

import "fmt"

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

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

go"abcde"

Пример

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

gopackage main

import "fmt"

func main() {
  var value any
  value = 42
  fmt.Println(value)
}

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

go42

Пример

Давайте присвоим переменной типа any значение слайса:

gopackage main

import "fmt"

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

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

go[1 2 3 4 5]

Пример

Давайте выполним утверждение типа для извлечения значения из переменной типа any:

gopackage 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")
  }
}

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

go"String value: abcde"

Пример

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

gopackage 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")
  }
}

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

go"Integer: 42"

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

  • тип interface{},
    который является исходным типом для any
  • тип comparable,
    который ограничивает типы, поддерживающие сравнение
  • тип string,
    который представляет строковые значения
  • тип int,
    который представляет целочисленные значения