any в Go 1.18+?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
// 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{} в новом коде для лучшей читаемости.