Здравствуйте, ребята! Давно мучает вопрос, а что в Go используют вместо дженериков?
Там, где в других языках используют дженерики, в гошечке в 90% случаев используют интерфейсы или просто обходятся без джененриков, в 10% - копипаста, рефлексия и кодогенерация, именно в таком порядке приоритетов.
Смысл в том, что generic’и с template’ами в других языках программирования используют не по назначению в большинстве случаев, что приводит к необоснованному усложнению кода, замедлению скорости компиляции, разрастанию скомпилированных бинарников. И только в паре процентов случаев использование generic’ов дает реальный выигрыш в качестве кода. В 99% случаев это стандартный набор контейнеров и алгоритмов для произвольных типов данных.
Разработчики go готовы добавить generic’и, если удастся реализовать их в таком виде, чтобы максимально затруднить их неверное использование, в то же время максимально упростить их корректное использование. Проблема в том, что такие дженерики пока никто не придумал. См. golang.org/doc/faq#generics