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的操作并使用一个指针。


无论jsonbson支持,omitempty标签。对于json,“空值为false,0,

或接口值以及任何长度为零的数组,切片,映射 ”(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技巧的延伸。

以上是 Golang中的空字段或不需要的struct字段 的全部内容, 来源链接: utcz.com/qa/429410.html

回到顶部