🟢 Лёгкий · 1 очк. Интерфейсы
Что такое any в Go 1.18+?
A Новый тип данных
B Алиас для interface{}
C Дженерик-параметр
D Ключевое слово для generics
Объяснение вопроса

any - это встроенный алиас для interface{}, добавленный в Go 1.18. Они полностью взаимозаменяемы.

Определение в стандартной библиотеке

// builtin/builtin.go
type any = interface{}

Это именно алиас типа (через =), а не новый тип. Поэтому any и interface{} можно использовать в одних и тех же местах без приведения.

Сравнение записи

// До Go 1.18:
func Print(v interface{}) { fmt.Println(v) }
var data map[string]interface{}

// Go 1.18+:
func Print(v any) { fmt.Println(v) }
var data map[string]any

Использование в generics

// any часто используется как constraint:
func Keys[K comparable, V any](m map[K]V) []K {
    keys := make([]K, 0, len(m))
    for k := range m {
        keys = append(keys, k)
    }
    return keys
}
  • any как constraint означает "любой тип" (без ограничений)
  • comparable - типы, поддерживающие == и !=

Рекомендация Go-команды: используйте any вместо interface{} в новом коде для лучшей читаемости.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.