Дженерики в Go следует использовать в случаях, когда компонент абстрагирован от предметной области. 1 Например, алгоритм обхода графа или реализация списка — хорошие кандидаты на использование дженериков. 1 Если же, например, пользователь имеет разные роли, то лучше выразить это через свойство сущности или завести отдельный тип для каждой роли. 1
Второй критерий — использование компонента или алгоритма со множеством разных типов данных, при этом поведение компонента не зависит от конкретного типа. 1 Например, список одинаково работает и для строк, и для чисел. 1 Если же поведение компонента меняется в зависимости от типа, то лучше использовать интерфейсы. 1
От дженериков лучше отказаться, если они усложнят структуру кода и его читаемость. 2 Также стоит учитывать, что не все существующие библиотеки и инструменты уже полностью поддерживают дженерики. 2
Таким образом, выбор между использованием дженериков и отказом от них зависит от конкретной ситуации и задач разработки.