1 回答

TA貢獻2065條經驗 獲得超14個贊
所以你想要一個可以容納任何類型實體的“通用”類型?該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 關注
- 147 瀏覽
添加回答
舉報