在 Go 语言中,结构体可以使用 tag(标签)来标识字段的元数据,例如 JSON、XML 等。tag 是一个字符串,以反引号 ` 包围,例如:

type User struct {
    Name     string `json:"name"`
    Age      int    `json:"age"`
    Birthday string `json:"birthday,omitempty"`
}

这里的 tag 指定了 JSON 序列化时对应的字段名和可选字段的忽略条件。

要解析 tag,可以使用 reflect 包中的 Type 和 StructTag 函数。示例代码如下:

package main

import (
    "fmt"
    "reflect"
)

type User struct {
    Name     string `json:"name"`
    Age      int    `json:"age"`
    Birthday string `json:"birthday,omitempty"`
}

func main() {
    u := User{Name: "John", Age: 30}
    t := reflect.TypeOf(u)
    for i := 0; i < t.NumField(); i++ {
        f := t.Field(i)
        fmt.Printf("%s: %s\n", f.Name, f.Tag.Get("json"))
    }
}

输出结果为:

Name: name
Age: age
Birthday: birthday,omitempty

这里使用 reflect.TypeOf 获取结构体类型,然后遍历结构体的字段。对于每个字段,使用 f.Tag.Get("json") 获取 JSON tag 的值。注意,如果 tag 中没有指定 JSON,则返回空字符串。

Golang 结构体 Tag 解析教程:使用 reflect 包解析 JSON 标签

原文地址: https://www.cveoy.top/t/topic/n65q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录