我的单元测试失败并显示以下消息:&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,
- 字段都是有效值类型的结构,
- 以上任何一种切片。
请注意,这不包括“任何接口类型”。
- 1 回答
- 0 关注
- 164 浏览
添加回答
举报
0/150
提交
取消