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

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

問(wèn):golang 指向 map[string]interface{} 的指針

問(wèn):golang 指向 map[string]interface{} 的指針

Go
人到中年有點(diǎn)甜 2021-11-22 18:48:30
我(golang 新手)正在嘗試在函數(shù)中創(chuàng)建一個(gè) map[string]interfaces{}。代碼編譯并運(yùn)行,但地圖為空。package mainimport (    "fmt"       "encoding/json" )func main() {    var f interface{}    var sJson string                    // JSON string from VT    var err error                       // errors    var b []byte                        // bytearray of JSON string    var rootMap map[string]interface{}    rootMap = make(map[string]interface{})    sJson=`{"key": "foo"}`    fmt.Println(sJson)    err = json2map(&b, &sJson, f, rootMap)    if err != nil { return }    switch v := rootMap["key"].(type) {        case float64:            fmt.Printf("Value: %d",v)        case string:            fmt.Printf("Value: %s", v)        case nil:            fmt.Println("key is nil")                   default:            fmt.Println("type is unknown")              }       }func json2map(b *[]byte, sJson *string, f interface{}, myMap map[string]interface{}) error {    var err error    *b = []byte(*sJson)     err = json.Unmarshal(*b,&f)     myMap = f.(map[string]interface{})    return err}輸出是:{"key": "foo"}key is nil我發(fā)現(xiàn)這篇文章描述了如何使用 map[string]string。此代碼按預(yù)期工作:package mainimport (    "fmt")type MyType struct {    Value1 int    Value2 string}func main() {    myMap := make(map[string]string)    myMap["key"] = "foo"    ChangeMyMap(myMap)      fmt.Printf("Value : %s\n",  myMap["key"])    }func ChangeMyMap(TheMap map[string]string) {    TheMap["key"] = "bar"}所以我認(rèn)為我的問(wèn)題與 map 是 interface 而不是 string 類(lèi)型有關(guān),但我不知道為什么第一個(gè)代碼不起作用,而第二個(gè)代碼起作用。
查看完整描述

1 回答

?
慕慕森

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

這里有很多事情會(huì)引起混亂:

  • 你根本不需要b。您正在傳遞一個(gè)指向您在函數(shù)內(nèi)重新分配的字節(jié)切片的指針。直接使用字符串即可。

  • 我們不需要指向sJson字符串的指針。字符串是不可變的,您不會(huì)嘗試重新分配sJson變量。

  • 您正在解組到一個(gè)空接口,然后嘗試將myMap變量重新分配給f. 由于myMap不是指針,該賦值僅作用于函數(shù)內(nèi)。直接解組就可以了myMap

如果您更改這些內(nèi)容,您會(huì)發(fā)現(xiàn)該json2map函數(shù)最終只有一行,并且可以完全刪除:

func json2map(sJson string, myMap map[string]interface{}) error {
    return json.Unmarshal([]byte(sJson), &myMap)
    }


查看完整回答
反對(duì) 回復(fù) 2021-11-22
  • 1 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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