在Golang中,结构体标记(Struct Tag),也称为结构体注释(Struct Annotation),是一种对Go结构体中的字段进行元数据附加的机制。这些标记是用反引号(`)包裹起来的键值对,可以在运行时通过反射机制获取并处理。
创新互联-专业网站定制、快速模板网站建设、高性价比兴山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式兴山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖兴山地区。费用合理售后完善,十年实体公司更值得信赖。
结构体标记使用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
本文题目:Golang中的结构体标签StructTag详解
路径分享:http://www.gawzjz.com/qtweb/news49/199449.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联