Golang中的空字段或不需要的struct字段
我对Go之类的打字语言还是陌生的,并且正在尝试学习实现事物的最佳方法。
我有两个表示将插入到mongodb数据库中的模型的结构。一个结构(投资)具有另一个结构(组)作为其字段之一。
type Group struct { Base
Name string `json:"name" bson"name"`
}
type Investment struct {
Base
Symbol string `json:"symbol" bson:"symbol" binding:"required"`
Group Group `json:"group" bson:"group"`
Fields bson.M `json:"fields" bson:"fields"`
}
我遇到的问题是在投资模型中,不需要组。如果没有组,我认为最好不要将其插入数据库。在Go中处理这种数据库模型的最佳方法是什么?
回答:
:使用,omitempty
,如果您需要担心零值和null
/未指定之间的差异,请执行GitHub API的操作并使用一个指针。
无论json
和bson
支持,omitempty
标签。对于json,“空值为false,0,
或接口值以及任何长度为零的数组,切片,映射 ”(json
docs)。对于bson,,omitempty
表示“如果未将类型的值设置为零或将空切片或映射设置为空,则仅包括该字段”,并且零值包括空字符串和nil指针(bson
docs)。
因此,如果您确实需要一个Group结构,则可以放一个*Group
in,当指针为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
技巧的延伸。
以上是 Golang中的空字段或不需要的struct字段 的全部内容, 来源链接: utcz.com/qa/429410.html