Что такое Type Assertion

«Что такое Type Assertion» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Type assertion в Go позволяет получить доступ к конкретному типу значения интерфейса. Синтаксис: value, ok := someInterface.(Type). Если тип совпадает, value будет содержать приведённое значение, а oktrue. Если нет — ok будет false, а value — нулевым значением типа.

Пример:

var i interface{} = "hello"

s, ok := i.(string) // s = "hello", ok = true
f, ok := i.(float64) // f = 0.0, ok = false

Без проверки ok при несоответствии типов возникнет паника:

s := i.(string) // OK
f := i.(float64) // panic!

Используется для работы с пустыми интерфейсами (interface{}) или когда нужно уточнить конкретный тип.