gpt4 book ai didi

google-app-engine - 使用 Go 的 appengine/datastore 中的 Nilable 值

转载 作者:IT王子 更新时间:2023-10-29 01:48:14 26 4
gpt4 key购买 nike

数据存储支持的类型列表不包含指针类型 ( https://cloud.google.com/appengine/docs/go/datastore/reference )。那么我如何表示一个可以而且有时应该为零的值呢?例如,在以下结构中,我需要 DailyValuePercent 为 nilable 以明确指出缺少该值。

type NutritionFact struct {
Name string `datastore:",noindex" json:"name"`
DailyValuePercent int `datastore:",noindex" json:"dailyValuePercent"`
}

既然我不能使用 *int 作为数据存储的字段类型,那么如何表示可选值?

最佳答案

将您的整数存储为字符串(空字符串 => 无值)或使用如下复合类型:

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 接口(interface),您将在其中保存/加载一个 int 值和一个 isNil bool 值。

关于google-app-engine - 使用 Go 的 appengine/datastore 中的 Nilable 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com