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

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

如何在 mapstructure.decode 中傳遞結(jié)構(gòu)字段的指針

如何在 mapstructure.decode 中傳遞結(jié)構(gòu)字段的指針

Go
手掌心 2023-03-29 17:23:02
我正在嘗試借助 mapstructure 庫(kù)將地圖解碼為結(jié)構(gòu)類型。如果我使用普通變量進(jìn)行解碼,它可以解碼,但如果我傳遞結(jié)構(gòu)字段,它不會(huì)解碼地圖:package mainimport (    "github.com/mitchellh/mapstructure")type Person struct {    Name string}type Bundle struct {    Name string    Struct interface{}}func main() {    p_map := map[string]string{        "Name": "John",    }    p := Person{}    mapstructure.Decode(p_map, &p)    print(p.Name) // shows name John    b := Bundle{        "person"        Person{},    }    mapstructure.Decode(p_map, &b.Struct)    print(b.Struct.(Person).Name) // Does not show any name. Blank}您能否澄清我是否為地圖解碼傳遞了錯(cuò)誤的存儲(chǔ)空間,或者這只是地圖結(jié)構(gòu)限制,我無(wú)法將地圖解碼為結(jié)構(gòu)字段?謝謝你!
查看完整描述

2 回答

?
翻閱古今

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

我認(rèn)為你必須稍微改變一下實(shí)現(xiàn)


var p1 Person


mapstructure.Decode(p_map, &p1)

b := Bundle{

    p1,

}


print(b.Struct.(Person).Name) // John will appear

我正在嘗試上面的代碼,但導(dǎo)致 empty Person。也許Decode函數(shù)不能改變的實(shí)際值b.Struct(我不確定確切的原因,這只是我的意見(jiàn)),但如果我Person先解碼為結(jié)構(gòu)然后分配給Bundle那個(gè)作品。


更新:通過(guò)一些研究,我發(fā)現(xiàn)了問(wèn)題所在。您必須使用指針而不是結(jié)構(gòu)。這里是更新的代碼


package main


import (

    "github.com/mitchellh/mapstructure"

)


type Person struct {

    Name string

}


type Bundle struct {

    Name   string

    Struct interface{}

}


func main() {

    p_map := map[string]string{

        "Name": "John",

    }


    p := &Person{}

    mapstructure.Decode(p_map, &p)


    print(p.Name) // shows name John


    b := Bundle{

        "person",

        &Person{},

    }


    mapstructure.Decode(p_map, &b.Struct)


    print(b.Struct.(*Person).Name) // Does not show any name. Blank


}


查看完整回答
反對(duì) 回復(fù) 2023-03-29
?
斯蒂芬大帝

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

將 Bundle 中的 Struct 字段類型從 interface{} 更改為 Person 后,它對(duì)我有用。


type Bundle struct {

    Struct Person

}

print(b.Struct.Name)


查看完整回答
反對(duì) 回復(fù) 2023-03-29
  • 2 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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