Ограничения в GoLang (constraints) позволяют указать, какие типы данных могут быть использованы в дженериках. habr.com Дженерики — это обобщённое программирование, которое позволяет единожды написать код, работающий с множеством разных типов, соответствующих заданным ограничениям. blog.ildarkarymov.ru
Некоторые особенности работы ограничений:
- Перечисление подходящих типов. blog.ildarkarymov.ru Типы, подходящие под ограничение, перечисляются с помощью оператора «|». blog.ildarkarymov.ru benjiv.com Например, ограничение Ordered требует, чтобы тип был таким, что над ним задано отношение порядка. blog.ildarkarymov.ru
- Префикс «~». blog.ildarkarymov.ru Он означает, что это может быть, например, не только string, но и любой тип, для которого string является базовым типом. blog.ildarkarymov.ru
- Встроенные ограничения. blog.ildarkarymov.ru Например, comparable — встроенное в язык (начиная с версии 1.18) ограничение, захватывающее все типы, для которых уместны операторы сравнения. blog.ildarkarymov.ru
- Работа для аргументов типа. kovardin.ru Вызывающий код должен передавать только такой аргумент типа, который удовлетворяет ограничению. kovardin.ru То есть аргумент типа должен реализовывать все методы, определённые ограничением. kovardin.ru
Пример: нужно создать функцию, работающую с числами. habr.com Без дженериков пришлось бы писать отдельные функции для int, float64 и так далее. habr.com С дженериками и ограничениями можно сделать это одним махом. habr.com