亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用結構數組實現 google datastore propertyloadsaver

如何使用結構數組實現 google datastore propertyloadsaver

Go
HUH函數 2023-07-10 10:45:11
當你有一個結構數組時,如何為谷歌數據存儲實現 Load() 和 Save() ?顯然這是可能的,但是如何呢?Person首先,當您允許數據存儲本身將 a與對象列表序列化時Phone,您可以使用反射來查看它在內部創建一個*datastore.Entity對象列表:package mainimport (    "fmt"    "reflect"    "cloud.google.com/go/datastore")type Phone struct {    Type   string    Number string}type Person struct {    Name  string    Phone []Phone}func main() {    person := Person{Name: "Bob", Phone: []Phone{Phone{"a", "b"}, Phone{"c", "d"}}}    // save here    }}這是我到目前為止的工作,這保存了名稱字段,但會導致對象出現錯誤*datastore.Entity。這是我的嘗試:func (p *Person) Save() ([]datastore.Property, error) {    props := []datastore.Property{        {            Name:  "Name",            Value: p.Name,        },    }    var n []*datastore.Entity    for _, x := range p.Phone {        i1 := datastore.Property{Name: "Type", Value: x.Type}        i2 := datastore.Property{Name: "Number", Value: x.Number}        e := &datastore.Entity{Properties: []datastore.Property{i1, i2}}        n = append(n, e)    }    props = append(props, datastore.Property{Name:"Phone",Value:n})    return props, nil}數據存儲區本身抱怨以下錯誤:invalid Value type []*datastore.Entity for a Property with Name "Phone"我想知道是否有人可以闡明我哪里出錯了?如何以與數據存儲本身相同的方式將結構數組保存在數據存儲中?上面的示例代碼位于 go Playground 上:https ://play.golang.org/p/AP1oFnlo1jm
查看完整描述

1 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

經過一定量的實驗后,發現這里是如何Save()為具有結構的對象實現方法。datastore.Property 必須存儲持有數組[]interface{}而[]*datastore.Entity不是純數組[]*datastore.Entity:


func (p *Person) Save() ([]datastore.Property, error) {

    props := []datastore.Property{

        {

            Name:  "Name",

            Value: p.Name,

        },

    }


    var n []interface{}

    for _, x := range p.Phone {

        i1 := datastore.Property{Name: "Type", Value: x.Type}

        i2 := datastore.Property{Name: "Number", Value: x.Number}

        e := &datastore.Entity{Properties: []datastore.Property{i1, i2}}

        n = append(n, e)

    }

    props = append(props, datastore.Property{Name:"Phone",Value:n})


    return props, nil

}


查看完整回答
反對 回復 2023-07-10
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號