我(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è)代碼起作用。
問(wèn):golang 指向 map[string]interface{} 的指針
人到中年有點(diǎn)甜
2021-11-22 18:48:30