关于go中type xxx struct 结构体中tag的问题

来源:1-9 神奇的内置数据结构

曹学习

2021-05-28 09:24:12

type AlipayConfig struct {
AppID        string `mapstructure:"app_id" json:"app_id"`
PrivateKey   string `mapstructure:"private_key" json:"private_key"`
AliPublicKey string `mapstructure:"ali_public_key" json:"ali_public_key"`
NotifyURL    string `mapstructure:"notify_url" json:"notify_url"`
ReturnURL    string `mapstructure:"return_url" json:"return_url"`

像这样一个结构,里面可以有很多的tag配置,有些不是很了解,故想咨询一下老师。
1.mapstructure是做什么用的?
2.json这个tag的作用是不是将结构映射成json字符串时,json字符串中的key值为结构体tag中json配置的值?
3.除了mapstructure || json || binding 外还有没有其它比较常用的tag?

写回答

1回答

Xargin

2021-05-28

mapstructure 是社区的一个库吧,我记得是把 map 转成 struct 的,在转换的时候需要知道字段映射关系,比如

NotifyURL 在转换前在 map 中是 {"notify_url" : "https://baidu.com"}


json 这种是 json encode、decode 的时候用的,需要知道 json 字符串里的东西和你解析后的结构字段怎么对应(要不反射的代码没法写)。


你这里举例的这些 tag,理论上都是可以随意替换的,纯粹看社区库作者的喜好


PS: 你这个是不是把你们公司代码贴出来了。。。注意安全

0

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程