..
golang中map的"坑"
package main
import (
"fmt"
)
type User struct{
Name string
}
func main(){
var m = make(map[int]User)
var u = User{
Name: "Hello World",
}
m[1] = u
fmt.Println(m[1].Name)
var u2 =m[1]
u2.Name="Hello Golang"
fmt.Println(m[1].Name)
}
// Hello World
// Hello World
这段golang代码会输出两行Hello World,并不会输出Hello Golang,原因是golang中的map返回的是一个copy,而不是一个refrence。
如果要想返回一个refrence,那么应该怎么改呢
package main
import (
"fmt"
)
type User struct{
Name string
}
func main(){
var m = make(map[int]*User)
var u = User{
Name: "Hello World",
}
m[1] = &u
fmt.Println(m[1].Name)
var u2 =m[1]
u2.Name="Hello Golang"
fmt.Println(m[1].Name)
}
// Hello World
// Hello Golang