为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 GAE 数据存储不支持简单的结构字段类型?

为什么 GAE 数据存储不支持简单的结构字段类型?

Go
哆啦的时光机 2021-10-18 13:56:05
我的单元测试失败并显示以下消息:&errors.errorString{s:"datastore: unsupported struct field type: sus.Version"}我有一个测试结构类型,我试图将其保存到 GAE 数据存储:type foo struct{    sus.Version}其中 sus.Version 是接口:type Version interface{    GetVersion() int    getVersion() int    incrementVersion()     decrementVersion() }我尝试使用两个版本实现运行我的测试,首先它只是一个 int 的别名:type version int其次作为结构:type version struct{    val int}在 Version 接口方法被赋予接收器类型的地方(v *version),它需要是一个指针,因此递减和递增实际上更新它们被调用的版本,而不仅仅是一个副本。我不确定为什么这不起作用,可能是因为它是一个匿名字段?或者也许是因为它是指向 int 或 struct 而不是实际的 int 或 struct 的指针?
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

该数据存储包不允许使用的所有类型。特别是,它只允许使用以下类型:


- 有符号整数(int、int8、int16、int32 和 int64),

- 布尔,

- 细绳,

- float32 和 float64,

- []byte(最长 1 兆字节),

- 任何类型的基础类型是上述预先声明的类型之一,

- 字节串,

- *钥匙,

- time.Time(以微秒精度存储),

- appengine.BlobKey,

- appengine.GeoPoint,

- 字段都是有效值类型的结构,

- 以上任何一种切片。

请注意,这不包括“任何接口类型”。


查看完整回答
反对 回复 2021-10-18
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信