Golang中的结构体标签Struct Tag详解

Struct Tag

在Golang中,结构体标记(Struct Tag),也称为结构体注释(Struct Annotation),是一种对Go结构体中的字段进行元数据附加的机制。这些标记是用反引号(`)包裹起来的键值对,可以在运行时通过反射机制获取并处理。

结构体标记使用key:"value"的格式来定义,其中key是标记的名称,value是该标记的值。一个结构体字段可以有多个标记,每个标记之间使用空格分隔。

使用方法和代码示例

看一个例子:

type User struct {
    Name string `json:"name"`
    Age int `json:"age"`
}

注意如上结构体中反引号引起来的内容就是Golang中的Struct Tag,接下来看一下它的作用,如果输出json格式

u := &User{Name: "xiaohong", Age: "18"}
j, _ := json.Marshal(u)
fmt.Println(string(j))

输出如下内容

{"name": "xiaohong","age": 18}

如果去掉StructTag会输出什么呢,看如下例子:

type User struct {
  Name string
  Age int
}
u := &User{Name: "xiaohong", Age: "18"}
j, _ := json.Marshal(u)
fmt.Println(string(j))

输出如下内容

{"Name": "xiaohong","Age": 18}

可以看出加上Struct Tag后,输出的内容跟着发生了变化。所以Struct Tag通常是用来在将struct编码转换的过程中提供一些转换规则信息.

一般来讲,Tag 都是以 key:"value" 键值对的形式,如果有多个键值对,用空格分隔:

type User struct {
    Name string `json:"name" xml:"name"`
}

key 一般指的是要使用的包名,比如这里的json表示这个Name字段会被 ```encoding/json```包使用和处理。

Struct Tag可以使用reflect包中的方法来获取, Struct Tag是string基本类型的别名:type StructTag string,约定俗成的规则是以 key:"value" 这样的键值对。

// 获取tag中的内容
u := &User{Name: "xiaohong", Age: "18"}
t := reflect.TypeOf(u)
field := t.Elem().Field(0)
fmt.Println(field.Tag.Get("json"))

输出内容如下

name

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路多辛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值