Что такое пустой интерфейс

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

Ответ

Пустой интерфейс (interface{}) в Go — это интерфейс без методов. Он может содержать значение любого типа, так как все типы неявно удовлетворяют пустому интерфейсу. Часто используется для работы с динамическими данными, например, в функциях вроде fmt.Println.

func printAnything(v interface{}) {
    fmt.Printf("Type: %T, Value: %vn", v, v)
}

func main() {
    printAnything(42)         // int
    printAnything("hello")    // string
    printAnything([]int{1,2}) // []int
}

Для извлечения конкретного типа используется type assertion (v.(int)) или type switch. С Go 1.18 часто заменяется на дженерики (any — это алиас для interface{}).