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数据反序列化到结构体字段中。

posted @   guanyubo  阅读(152)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示