Ответ
Кодогенерация — это автоматическое создание кода на основе метаданных, шаблонов или конфигураций. В Go часто используется для генерации boilerplate-кода, сериализации, ORM и т. д.
Пример с go:generate:
//go:generate stringer -type=Status
type Status int
const (
Pending Status = iota
Approved
Rejected
)
Запуск go generate создаст метод String() для типа Status.
Популярные инструменты:
stringer— генерация методов для enum-типов.protoc— генерация кода из.proto(gRPC).mockgen— создание моков для интерфейсов.
Плюсы:
- Уменьшает рутинный код.
- Снижает вероятность ошибок.
- Ускоряет разработку.
Минусы:
- Усложняет отладку.
- Требует поддержки шаблонов.