Ответ
Generics (обобщённые типы) в Go позволяют писать функции и структуры, работающие с разными типами данных без дублирования кода. Появились в Go 1.18.
Пример функции с Generics:
func PrintSlice[T any](s []T) {
for _, v := range s {
fmt.Println(v)
}
}
Ключевые моменты:
- Используются угловые скобки
<T>для объявления типа-параметра any— аналог пустого интерфейса, но для generics- Можно добавлять ограничения типов через интерфейсы
- Работает с функциями, структурами, методами и интерфейсами
Ограничения:
- Нет специализации (как в C++)
- Нет метапрограммирования
- Некоторые сложные случаи требуют явного указания типов