名称为 属性 的数据存储无效值类型

Datastore invalid value type for a Property with name

我正在尝试使用 GoLang 中的 属性List 将 int64 数组保存到 Datastore。

这是 属性 列表中的 属性:

但是,我收到此错误:

我知道您可以在 Datastore 中存储数组,尤其是基元数组。所以我不确定我在尝试通过 属性List 插入它时做错了什么。我的所有其他属性都得到了正确保存(它们只是单个基元)。数组导致此问题。

已解决!感谢 @mkopriva 的帮助。

如果要保存任何受支持的 Datastore 数据类型的数组,则必须将该数组的每个元素追加到新的 interface{} 数组中。 Value Field Documentation

我写了这个反射函数来处理 any 切片类型:

src := []int64{1, 2, 3, 4, 5}
value := reflect.ValueOf(src)
kind := value.Kind()
switch kind {
case reflect.Slice:
    interfaceArr := make([]interface{},0)
    for i := 0; i < value.Len(); i++ {
        interfaceArr = append(interfaceArr, value.Index(i).Interface())
    }
    return interfaceArr
}

下面是数组 属性 在 属性 列表中的正确查找方式: