Введение в обобщения в Go
Обобщение пишет одну функцию сразу для нескольких типов. Вместо копии под каждое имя типа задают параметр типа, а конкретное имя подставляют при использовании или оставляют компилятору.
Обобщение пригодится там, где логика одинакова, а тип данных меняется: поиск в срезе, пара значений, контейнер с одним полем. Код остается короче, а правила проверки типов сохраняются на этапе сборки.
Параметр типа сопровождают ограничением: оно говорит, какие имена допустимы внутри тела. Самое широкое ограничение принимает любое значение, сравнимое ограничение разрешает равенство, свой интерфейс открывает методы, перечень типов через вертикальную черту сужает список.
В этом разделе сначала разберем функцию и вывод типа, затем несколько параметров, структуру и ограничения. В конце закрепим приемы на задачах без повторения основ функций и интерфейсов.