В Go для определения конкретного типа объекта, реализующего интерфейс, используется утверждение типа (type assertion) или переключение по типу (type switch).
Каким образом можно определить конкретный тип объекта, реализующего интерфейс?
В Go для определения конкретного типа объекта, реализующего интерфейс, используется утверждение типа (type assertion) или переключение по типу (type switch).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Go для определения конкретного типа объекта, реализующего интерфейс, используется утверждение типа (type assertion) или переключение по типу (type switch).
Пример с утверждением типа:
var i interface{} = someInterfaceValue
if v, ok := i.(ConcreteType); ok {
// v имеет тип ConcreteType
fmt.Println("Это ConcreteType", v)
} else {
fmt.Println("Другой тип")
}
Пример с type switch:
switch v := i.(type) {
case ConcreteType:
fmt.Println("Это ConcreteType", v)
case AnotherType:
fmt.Println("Это AnotherType", v)
default:
fmt.Println("Неизвестный тип")
}