数据存储区支持的类型列表不包含指针类型(https://cloud.google.com/appengine/docs/go/datastore/reference)。
那我怎么能代表一个有时候应该是零的价值呢?
例如,在以下结构中,我需要DailyValuePercent
可以明确表示缺少该值。
type NutritionFact struct {
Name string `datastore:",noindex" json:"name"`
DailyValuePercent int `datastore:",noindex" json:"dailyValuePercent"`
}
由于我不能使用* int作为数据存储区的字段类型,那么如何表示可选值?
答案 0 :(得分:0)
将整数存储为字符串(空字符串=>无值)或使用类似的复合类型:
type NillableInt struct {
i int
isNil bool // or isNotNil bool if you want different default semantics
}
适应您的性能与内存使用要求。
如果您希望代码处理int指针但在数据存储区中保留nil值,请按以下方式定义结构:
type NutritionFact struct {
Name string `datastore:",noindex" json:"name"`
DailyValuePercent int `datastore:"-"`
}
实现PropertyLoadSaver接口,您将保存/加载一个int值和一个isNil布尔值。