01介绍在Golang语言中,我们可以使用反引号为Struct中的字段设置标签,通过Tags我们可以为Struct中的字段定义额外的属性。Tag其实是一个字符串,但是它有一个特定的格式,即Tag字符串必须由key:"value"组成,key必须是非空字符串,value必须用双引号括起来。其中,每个key都是非空字符串,由除空格(U+0020'')、引号(U+0022'"')和冒号(U+003A':')外的非控制字符组成;每个value使用U+0022'"'字符和Go字符串语法引用。示例代码:typeUserstruct{Iduint64`json:"id"`Namestring`json:"name"`}02操作Struct字段中的Tag在Golang语言中,可以使用标准库reflect包来操作Struct中的Tag.在reflect包中,StructField用于表示Struct中的字段。reflect包源码:typeStructFieldstruct{NamestringPkgPathstringTypeType//fieldtypeTagStructTag//fieldtagstringOffsetuintptr//offsetwithinstruct,inbytesIndex[]int//indexsequenceforType.FieldByIndexAnonymousbool//isanembeddedfield}阅读上面的代码,我们可以看到Tag也是一个字段的一部分StructTag的类型是StructTag,其实是string类型的别名。typeStructTagstringStructTag提供了Get方法func(tagStructTag)Get(keystring)string,可以得到给定参数key关联的值。如果Tag中不存在该键,则Get返回一个空字符串。示例代码:funcGetTag(){u:=User{}ut:=reflect.TypeOf(u)fori:=0;i
