Что такое теги структур
Добавляйте метаданные к полям
«Что такое теги структур» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Что такое теги структур
Тег структуры — это строка метаданных, прикреплённая к полю структуры. Он не влияет на значение поля, но содержит инструкции для библиотек, которые его читают.
Синтаксис тегов
Теги указываются после типа поля и заключаются в кавычки необработанной строки. Каждый тег представляет собой пару key:"value". Несколько пар разделяются пробелами.
Типичный тег выглядит так: json:"name".
Структура с тегом
Здесь поле содержит тег JSON, который сообщает кодировщикам, что нужно использовать имя ключа в нижнем регистре.
package main
import "fmt"
type User struct {
Name string "json:\"name\""
}
func main() {
u := User{Name: "Ann"}
fmt.Println(u.Name)
}Теги — это всего лишь метаданные
Теги не меняют способ использования поля в коде. u.Name по-прежнему работает как обычно. Теги важны только для библиотек, которые изучают их с помощью рефлексии.
Несколько тегов у одного поля
Одно поле может содержать несколько ключей тегов, каждый из которых используется отдельной библиотекой.
package main
import "fmt"
type Product struct {
Name string "json:\"name\" db:\"product_name\""
}
func main() {
p := Product{Name: "Pen"}
fmt.Println(p.Name)
}Распространённые ключи тегов
Часто используются следующие ключи тегов:
json— кодирование JSONxml— кодирование XMLdb— сопоставление с колонками базы данныхvalidate— правила проверки
Чтение тегов с помощью рефлексии
Пакет reflect позволяет читать теги во время выполнения. field.Tag.Get("json") возвращает значение ключа json.
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string "json:\"name\""
}
func main() {
t := reflect.TypeOf(User{})
f := t.Field(0)
fmt.Println(f.Tag.Get("json"))
}Получение значения тега
Tag.Get(key) возвращает значение ключа или пустую строку, если ключ отсутствует. Tag.Lookup(key) также сообщает, существовал ли ключ.
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string "json:\"name\""
}
func main() {
f := reflect.TypeOf(User{}).Field(0)
val, ok := f.Tag.Lookup("json")
fmt.Println(val, ok)
}Соглашение о формате тегов
Стандартный формат тега — key:"value" без пробелов вокруг двоеточия. Библиотеки ожидают именно это соглашение. Неправильно сформированные теги могут быть незаметно проигнорированы.
Зачем нужны теги
Теги позволяют хранить правила сопоставления рядом с описываемыми ими полями, а не в отдельной конфигурации. Одна структура может использоваться для вывода JSON, строк базы данных и проверки — всё это настраивается с помощью тегов.
Теги у неэкспортируемых полей
Теги неэкспортируемых полей (в нижнем регистре) видны через рефлексию, но большинство кодировщиков полностью пропускает неэкспортируемые поля. Поля, которые нужно сериализовать, должны быть экспортируемыми (начинаться с заглавной буквы).
Быстрая проверка
Для чего нужен тег структуры?
Итоги
Теги структур:
- метаданные, прикреплённые к полям в форме
key:"value" - не влияют на обычный код; читаются с помощью рефлексии
- используются для json, xml, db, validate и других задач
Часто задаваемые вопросы
Урок «Что такое теги структур» бесплатный?
Да — полный текст урока «Что такое теги структур» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Что такое теги структур»?
Добавляйте метаданные к полям Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Что такое теги структур»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое теги структур
- Теги JSON
- Библиотеки валидации
- Разбор пользовательских тегов