第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

有沒有辦法在不使用自定義結(jié)構(gòu)的情況下檢查實(shí)體?

有沒有辦法在不使用自定義結(jié)構(gòu)的情況下檢查實(shí)體?

Go
素胚勾勒不出你 2023-04-04 14:17:26
struct datastore.Entity看起來非常有用,這就是我想要處理實(shí)體的方式,但我沒有看到任何使用它的 API。大多數(shù)函數(shù)(例如Get)都采用一個(gè)that 只有當(dāng)它是結(jié)構(gòu)與傳入數(shù)據(jù)一樣精確的interface{}結(jié)構(gòu)時(shí)才似乎有效。// https://godoc.org/cloud.google.com/go/datastore#Client.Getctx := context.Background()client, err := datastore.NewClient(ctx, "project-id")if err != nil {    // TODO: Handle error.}type Article struct {    Title       string    Description string    Body        string `datastore:",noindex"`    Author      *datastore.Key    PublishedAt time.Time}key := datastore.NameKey("Article", "articled1", nil)article := &Article{}if err := client.Get(ctx, key, article); err != nil {    // TODO: Handle error.}我將如何以通用方式獲得該實(shí)體?如果我不完全了解結(jié)構(gòu)怎么辦?(更具體地說,我如何獲得 instead 的實(shí)例datastore.Entity?)
查看完整描述

1 回答

?
翻翻過去那場雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

所以你想要一個(gè)可以容納任何類型實(shí)體的“通用”類型?該datastore軟件包已經(jīng)為您提供了這樣一種類型:datastore.PropertyList.

這是您可以使用它的方式:

var entity datastore.PropertyList

if err := client.Get(ctx, key, &entity); err != nil {

? ? // TODO: Handle error.

}

相關(guān)文檔來自datastore

特性

實(shí)體的內(nèi)容可以用多種類型表示。這些通常是結(jié)構(gòu)指針,但也可以是實(shí)現(xiàn) PropertyLoadSaver 接口的任何類型。如果使用結(jié)構(gòu)指針,則不必顯式實(shí)現(xiàn) PropertyLoadSaver 接口;數(shù)據(jù)存儲(chǔ)將通過反射自動(dòng)轉(zhuǎn)換。如果結(jié)構(gòu)指針確實(shí)實(shí)現(xiàn)了該接口,那么將優(yōu)先使用這些方法而不是結(jié)構(gòu)指針的默認(rèn)行為。結(jié)構(gòu)指針的類型更強(qiáng),更易于使用;PropertyLoadSavers 更靈活。

所以你可以使用任何實(shí)現(xiàn)datastore.PropertyLoadSaver接口的類型。這個(gè)接口類型是:

type?PropertyLoadSaver?interface?{
????Load([]Property)?error
????Save()?([]Property,?error)
}

再次引用包文檔:

PropertyLoadSaver 接口

實(shí)體的內(nèi)容也可以由實(shí)現(xiàn) PropertyLoadSaver 接口的任何類型表示。此類型可以是結(jié)構(gòu)指針,但不一定是。datastore包在獲取實(shí)體內(nèi)容時(shí)調(diào)用Load,在放入實(shí)體內(nèi)容時(shí)調(diào)用Save。可能的用途包括派生非存儲(chǔ)字段、驗(yàn)證字段或僅在其值為正時(shí)索引字段。

[...]?*PropertyList 類型實(shí)現(xiàn)了 PropertyLoadSaver,因此可以保存任意實(shí)體的內(nèi)容。


查看完整回答
反對 回復(fù) 2023-04-04
  • 1 回答
  • 0 關(guān)注
  • 145 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)