0Pricing
Go Academy · Урок

Что такое теги структур

Добавляйте метаданные к полям

«Что такое теги структур» — бесплатный урок 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 — кодирование JSON
  • xml — кодирование XML
  • db — сопоставление с колонками базы данных
  • 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 — локальная установка не требуется.

Все уроки этого курса

  1. Что такое теги структур
  2. Теги JSON
  3. Библиотеки валидации
  4. Разбор пользовательских тегов
← Назад к Go Academy