Метка поля структуры в Go
У поля может быть строка-метка, и ее читают по имени ключа. Метка пишется в обратных кавычках сразу после типа поля и хранит пары ключ и текст, разделенные пробелами.
В этом разделе метку только читают: она не превращает структуру в текст и не отправляет данные по сети. Такую строку удобно проверить в коде, который сам решает, как использовать ключ.
Объявим пользователя с меткой у имени и
выведем значение ключа json:
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
t := reflect.TypeOf(User{})
field, _ := t.Field(0)
fmt.Println(field.Tag.Get("json"))
}
На экране "name". Метод Get
у тега ищет нужный ключ и возвращает
текст после двоеточия. Если ключа нет,
ответ будет пустой строкой.
Прочитаем метку у второго поля тем же способом:
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
t := reflect.TypeOf(User{})
field, _ := t.Field(1)
fmt.Println(field.Tag.Get("json"))
}
Дана структура:
type Item struct {
Title string `json:"title"`
}
Выведите текст метки json у поля
Title.
Дана структура:
type Row struct {
Code int `json:"code" db:"id"`
}
Прочитайте метку с ключом db у
поля Code и выведите ее.
Дана структура:
type Note struct {
Text string `json:"text"`
}
Скажите, что вернет чтение метки с ключом
xml у поля Text.