Sobes.tech
Назад к вопросам
Middle
9

Type Assertion — для чего нужна конструкция?

Компании, где спрашивали
Магнум

Ответ от нейросети

sobes.tech AI

В Go конструкция Type Assertion используется для извлечения конкретного типа из интерфейсного значения. Она позволяет проверить и получить значение определённого типа, если известно, что интерфейс содержит именно этот тип.

Синтаксис:

value, ok := interfaceValue.(ConcreteType)
  • value — переменная типа ConcreteType, в которую будет записано значение.
  • ok — булево значение, указывающее, успешна ли была проверка типа.

Если ok равно true, значит interfaceValue содержит значение типа ConcreteType, и его можно использовать.

Пример:

var i interface{} = "hello"

str, ok := i.(string)
if ok {
    fmt.Println("Строка:", str)
} else {
    fmt.Println("i не содержит строку")
}

Если попытаться сделать утверждение без проверки ok и тип не совпадает, произойдёт паника:

str := i.(string) // паника, если i не string

Таким образом, Type Assertion нужна для безопасного извлечения значения конкретного типа из интерфейсного значения, что часто используется при работе с интерфейсами и динамическими типами.