golang结构体标签
golang标签介绍
在 Go 语言中,结构体字段可以使用标签(Tag)来附加元数据。标签是包含在字段声明的后方,由一对反引号括起来的字符串,例如:json:“name”
。在使用标签时,需要使用反射的相关函数来解析和使用标签的值。标签和反射一起使用,为我们提供了在运行时动态处理结构体字段的能力,例如通过标签解析结构体,并根据标签的值进行字段映射、表单验证、JSON 或数据库的序列化与反序列化等操作。
在Go语言中,结构体标签(tags)是为了在进行序列化和反序列化操作时提供元数据,比如在JSON序列化中指定字段的名称,或者在数据库操作中指定字段的列名。
结构体标签遵循如下格式:
type MyStruct struct {
FieldName fieldType `tag1:"value1" tag2:"value2"`
}
例如,以下是一个使用结构体标签的Go代码示例,其中的结构体被用于JSON序列化和反序列化:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address,omitempty"` // omitempty表示如果字段为空则不包含在JSON中
}
func main() {
p := Person{
Name: "John Doe",
Age: 30,
}
// 序列化
jsonBytes, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(jsonBytes))
// 反序列化
var p2 Person
if err := json.Unmarshal(jsonBytes, &p2); err != nil {
fmt.Println(err)
return
}
fmt.Printf("%+v\n", p2)
}
在这个例子中,Person结构体的字段使用了json:"name"这样的标签,这告诉json.Marshal函数如何将结构体字段序列化为JSON,以及json.Unmarshal函数如何将JSON数据反序列化到结构体字段中。
Do not communicate by sharing memory; instead, share memory by communicating.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)