tl; dr
:使用
,omitempty,如果您需要担心零值和null
/未指定之间的差异,请执行GitHub API的操作并使用一个指针。
无论
json和
bson支持
,omitempty标签。对于json,“空值为false,0, 任何nil指针
或接口值以及任何长度为零的数组,切片,映射 或字符串 ”(json
docs)。对于bson,
,omitempty表示“如果未将类型的值设置为零或将空切片或映射设置为空,则仅包括该字段”,并且零值包括空字符串和nil指针(bson
docs)。
因此,如果您确实需要一个Group结构,则可以放一个
*Groupin,当指针为nil时,它不会被存储。如果
Investment只需要保留组 名
,那就更简单了:
""因为组名可以防止存储组密钥。
bson默认情况下已经使用小写的字段名称,因此您可以在匹配时从struct标记中忽略它。
json将默认为大写名称,因此如果需要小写,请在标签中指定小写名称。
因此,最好的情况是,也许您可以使用:
type Investment struct { base Symbol string `json:"symbol" binding:"required"` Group string `json:"group,omitempty" bson:",omitempty"` Fields bson.M `json:"fields"`}如果您遇到过类型(“”,0,假等)的零值不同于“未指定”的字段,则可以执行GitHub
API的操作并将指针放在结构中
-本质上是
*Group技巧的延伸。



