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

Junior
1.3k просмотров
AFK Offer AI

Пустой интерфейс interface{} (или any с Go 1.18) не содержит методов, поэтому его реализует любой тип. Это аналог Object в Java или void* в C.

func Print(v any) {
    fmt.Println(v)
}

Print(42) Print("hello") Print([]int{1, 2, 3})

Используется когда нужно принять произвольный тип: json.Unmarshal, fmt.Println, контейнеры. Для извлечения конкретного типа используй type assertion (v.(string)) или type switch. Злоупотреблять не стоит — теряется типобезопасность.

Следующий вопрос

Что такое sync.Pool?