Структурные теги: строка, которая управляет библиотеками
Строка в бэктиках после поля структуры — это тег. Сам по себе он ничего не делает; его читают библиотеки через рефлексию, чтобы понять, как обращаться с полем.
type Product struct {
ID int `json:"id" db:"product_id"`
Title string `json:"title" validate:"required"`
}Одно поле может нести теги для нескольких библиотек сразу: json для сериализации, db для маппинга на колонку, validate для проверки. Каждая читает свой ключ.
Механика
Под капотом это reflect.StructTag — обычная строка с парами ключ:"значение". Можно написать свой парсер тегов, но чаще достаточно того, что уже читают популярные пакеты.