golang struct的tag

Go的struct字段可以使用tag进行标记,tag主要用于反射场景。Tag遵循特定规则,如key:value形式,无空格。它们是struct的一部分,在反射包中通过StructTag获取。tag的意义在于动态赋值时提供依据,如json解析、ORM映射等。了解并利用tag特性有助于自定义数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Go的struct声明允许字段附带Tag来对字段做一些标记。
Tag不仅仅是一个字符串那么简单,因为其主要用于反射场景,reflect包中提供了操作Tag的方法,所以Tag写法也要遵循一定的规则。

1.Tag规则

Tag本身是一个字符串,但字符串中却是:以空格分隔的 key:value 对。

key: 必须是非空字符串,字符串不能包含控制字符、空格、引号、冒号。
value: 以双引号标记的字符串
注意:冒号前后不能有空格
如下代码所示,如此写没有实际意义,仅用于说明Tag规则

type Server struct {
   
    ServerName string `key1:"value1" key11:"value11"`
    ServerIP   string `key2:"value2"`
}

上述代码ServerName字段的Tag包含两个key-value对。ServerIP字段的Tag只包含一个key-value对。

2.Tag是Struct的一部分

前面说过,Tag只有在反射场景中才有用,而反射包中提供了操作Tag的方法。在说方法前,有必要先了解一下Go是如何管理struct字段的。

以下是reflect包中的类型声明,省略了部分与本文无关的字段。

// A StructField describes a si
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值