Ответ
Тег (tag) в Go используется для добавления метаданных к полям структуры. Он задается в виде строки после типа поля и позволяет:
-
Управлять сериализацией (JSON, XML, YAML и др.):
type User struct { Name string `json:"name" xml:"username"` Age int `json:"age,omitempty"` }
json:"name"
указывает имя поля при кодировании в JSON,omitempty
означает, что поле будет пропущено, если оно имеет нулевое значение. -
Валидацию (например, в библиотеках типа
validator
):type Request struct { Email string `validate:"required,email"` }
required
иemail
— правила валидации для поляEmail
. -
ORM-маппинг (GORM, SQLx):
type Product struct { ID uint `gorm:"primaryKey;autoIncrement"` Name string `gorm:"type:varchar(100);uniqueIndex"` }
primaryKey
иautoIncrement
определяют свойства поляID
в базе данных.
Теги разбираются через рефлексию (reflect
пакет). Синтаксис: `key:"value"`
. Значения могут содержать запятые для разделения параметров (например, json:"age,omitempty"
). Можно использовать несколько тегов для одного поля, разделяя их пробелами: `json:"name" validate:"required"`
.