我一直在尝试更新结构中的地图变量,但没有成功。
我预计 Golang 中的地图是通过引用传递的,因此将一个引用分配给另一个引用应该可行,但事实并非如此。
我可能在这里遗漏了一些明显的东西,如果是这样的话,我们深表歉意!
package main
import (
"fmt"
)
type Foo struct {
t map[string]interface{}
}
func (F Foo) Set(ta map[string]interface{}) {
F.t = ta
}
func (F Foo) Get() map[string]interface{} {
return F.t
}
func main() {
t := make(map[string]interface{})
t["t"] = "sf"
t["array"] = []int{1, 2, 3}
fmt.Println(t) // prints map[t:sf array:[1 2 3]]
var f Foo
f.Set(t)
// why the following?
fmt.Println(f.t) //prints map[]
f.t = t
fmt.Println(f.t) //prints map[t:sf array:[1 2 3]]
}
游乐场:https://play.golang.org/p/i1ESV1BdjGQ
牧羊人nacy
相关分类