Go语言从入门到放弃(结构体常见的tag)

什么是tag

Tag是结构体中某个字段别名, 可以定义多个, 空格分隔

type Student struct {
    Name string `ak:"av" bk:"bv" ck:"cv"`
}

使用空格来区分多个tag,所以格式要尤为注意

tag的作用

tag相当于该字段的一个属性标签, 在Go语言中, 一些包通过tag来做相应的判断

举个例子, 比如我们有一个结构体

type Student struct {
    Name string
}

然后我们将一个该结构体实例化一个 s1

s1 := Student{
        Name: "s1",
    }

再将 s1 序列化

v, err := json.Marshal(s1) // json.Marshal方法,json序列化,返回值和报错信息
if err != nil { // 不为nil代表报错
    fmt.Println(err)
}
fmt.Println(string(v)) // []byte转string, json

此时 string(v) 为 

{
  "Name": "s1"  
}

因为在 Go 语言中, 结构体字段要想为外部所用就必须首字母大写, 但是如果这个 s1 是返回给前端的, 那每个字段都首字母大写就很怪, 此时我们可以给 Student 加tag解决

结构体修改为

type Student struct {
    Name string`json:"name"`
}

序列化时, 会自己找到名为 json 的tag, 根据值来进行json后的赋值

因此 string(v) 为

{
  "name": "s1"  
}

常用tag记录

json

json序列化或反序列化时字段的名称

db

sqlx模块中对应的数据库字段名

form

gin框架中对应的前端的数据字段名

binding

搭配 form 使用, 默认如果没查找到结构体中的某个字段则不报错值为空, binding为 required 代表没找到返回错误给前端

 

转载于:https://www.cnblogs.com/chnmig/p/11382390.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值