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

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

元帥變成了bson.Raw

元帥變成了bson.Raw

Go
繁華開滿天機(jī) 2021-08-10 14:59:30
使用gopkg.in/mgo.v2/bson,我想知道如何將 interface{} 值編組為 type 的值bson.Raw。該文檔的bson.Raw狀態(tài):使用這種類型可以部分解組或編組值。但是我找不到會返回bson.Raw.我錯過了什么?我嘗試做的示例:package mainimport (    "fmt"    "gopkg.in/mgo.v2/bson")func main() {    // How to avoid a MarshalRaw help function?    raw, err := MarshalRaw("Hello world")    if err != nil {        panic(err)    }    fmt.Printf("%+v\n", raw)}func MarshalRaw(v interface{}) (*bson.Raw, error) {    bin, err := bson.Marshal(struct{ Raw interface{} }{v})    if err != nil {        return nil, err    }    var raw struct{ Raw bson.Raw }    err = bson.Unmarshal(bin, &raw)    if err != nil {        return nil, err    }    return &raw.Raw, nil}輸出:&{種類:2 數(shù)據(jù):[12 0 0 0 72 101 108 108 111 32 119 111 114 108 100 0]}
查看完整描述

2 回答

?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗 獲得超8個贊

bson.Raw在編組和解組時都用作值。


要將 aninterface{}轉(zhuǎn)換為 a bson.Raw,首先要做的是對其進(jìn)行編組,以便獲得表示正在編組的任何內(nèi)容的純文檔數(shù)據(jù):


    var value interface{} = bson.M{"some": "value"}

    data, err := bson.Marshal(value)

    if err != nil {

            log.Fatal(err)

    }

然后它可能有一個或多個字段解組為bson.Raw值:


    var doc struct{ Some bson.Raw }

    err = bson.Unmarshal(data, &doc)

    if err != nil {

            log.Fatal(err)

    }

甚至整個文檔:


    var doc bson.Raw

    err = bson.Unmarshal(data, &doc)

    if err != nil {

            log.Fatal(err)

    }

如果您想要整個文檔而不僅僅是一個字段,您還可以使用此快捷方式:


    doc := bson.Raw{3, data}

3 常量代表bson 規(guī)范中的一個文檔,它當(dāng)然必須匹配提供的數(shù)據(jù)。由于 BSON 只支持頂層文檔,我們知道這一定是正確的。


查看完整回答
反對 回復(fù) 2021-08-10
?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗 獲得超5個贊

我相信 bson.Raw 旨在用作變量的類型。


例如:(在玩)


type Bar struct {

   AnInt int

   AString bson.Raw

}

“AString”字段將保留為您的鏈接提到的 bson.Raw 結(jié)構(gòu)。


如果您想部分解碼嵌套結(jié)構(gòu)的頂層以找出其實際類型,這將非常有用,以便您可以將其余部分解析為正確的數(shù)據(jù)類型。


請注意,以上內(nèi)容未經(jīng)測試,不在我目前可以實際運行的機(jī)器前。這是基于它像標(biāo)準(zhǔn) encoding/json 包一樣工作的假設(shè)。


查看完整回答
反對 回復(fù) 2021-08-10
  • 2 回答
  • 0 關(guān)注
  • 297 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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