我是一个新人。现在我有一个关于函数传递变量的问题。这里是代码:
type User struct {
Name string
Map map[string]string
}
func main() {
u := User{Name: "Leto"}
u.Map = make(map[string]string)
fmt.Println("before --------")
fmt.Println(unsafe.Pointer(&u))
fmt.Println(unsafe.Pointer(&(u.Map)))
fmt.Println(u)
Modify(u)
fmt.Println("after --------")
fmt.Println(u)
}
func Modify(u User) {
fmt.Println("in func --------")
fmt.Println(unsafe.Pointer(&u))
fmt.Println(unsafe.Pointer(&(u.Map)))
u.Name = "Paul"
u.Map["t"] = "t"
}
输出上面的代码:
before --------
0xc04203a4c0
0xc04203a4d0
{Leto map[]}
in func --------
0xc04203a500
0xc04203a510
after --------
{Leto map[t:t]}
在修改功能中我知道用户是一个副本,所以更改名称不起作用是可以的,但是为什么将地图效果更改为用户结构?
慕容708150
杨魅力
长风秋雁
慕容森
随时随地看视频慕课网APP
相关分类