1 回答
TA贡献2065条经验 获得超13个赞
所以你想要一个可以容纳任何类型实体的“通用”类型?该datastore
软件包已经为您提供了这样一种类型:datastore.PropertyList
.
这是您可以使用它的方式:
var entity datastore.PropertyList
if err := client.Get(ctx, key, &entity); err != nil {
// TODO: Handle error.
}
相关文档来自datastore
:
特性
实体的内容可以用多种类型表示。这些通常是结构指针,但也可以是实现 PropertyLoadSaver 接口的任何类型。如果使用结构指针,则不必显式实现 PropertyLoadSaver 接口;数据存储将通过反射自动转换。如果结构指针确实实现了该接口,那么将优先使用这些方法而不是结构指针的默认行为。结构指针的类型更强,更易于使用;PropertyLoadSavers 更灵活。
所以你可以使用任何实现datastore.PropertyLoadSaver
接口的类型。这个接口类型是:
type PropertyLoadSaver interface { Load([]Property) error Save() ([]Property, error) }
再次引用包文档:
PropertyLoadSaver 接口
实体的内容也可以由实现 PropertyLoadSaver 接口的任何类型表示。此类型可以是结构指针,但不一定是。datastore包在获取实体内容时调用Load,在放入实体内容时调用Save。可能的用途包括派生非存储字段、验证字段或仅在其值为正时索引字段。
[...] *PropertyList 类型实现了 PropertyLoadSaver,因此可以保存任意实体的内容。
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报