> Что такое аннотация в Go и зачем она нужна (Go)

Уровень: junior · Роль: backend · Категория: Технические вопросы

Компании: VK

Стек: Go

> Пример ответа

В Go нет аннотаций в том смысле, в котором они существуют в Java или C# (декораторы, атрибуты). Вместо этого используются теги структур (struct tags) - строковые литералы, которые записываются после полей структуры в обратных кавычках. Они служат для метаинформации, доступной через рефлексию (пакет reflect).

Зачем нужны:

  • Сериализация/десериализация (JSON, XML, YAML): теги json:"field_name,omitempty" управляют именами полей и правилами кодирования.

  • Валидация: библиотеки вроде go-playground/validator используют теги validate:"required,min=3" для проверки данных.

  • ORM и базы данных: теги db:"column_name" или gorm:"primaryKey" задают маппинг на таблицы.

  • Документация и кодогенерация: теги могут нести метаданные для генераторов кода (например, swagger).

Пример:

GO
type User struct {
Name string `json:"name" validate:"required"`
Age int `json:"age,omitempty" validate:"gte=0,lte=130"`
}

Важно: Теги - это просто строки. Их интерпретация зависит от конкретной библиотеки или вашего кода. Встроенной поддержки аннотаций как языковой конструкции в Go нет.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью