type student struct {
Name string
Age int
}
func main() {
m := make(map[string]*student)
s := []student{
{Name: "Allen", Age: 24},
{Name: "Tom", Age: 23},
}
for _, stu := range s {
m[stu.Name] = &stu
}
fmt.Println(m)
for key, value := range m {
fmt.Println(key, value)
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
地图[艾伦:0xc42006a0c0 汤姆:0xc42006a0c0]
艾伦和{汤姆 23}
汤姆 &{汤姆 23}
如何解释Slice的现象,在我看来,stu应该是s的每个成员的地址,但是从结果来看,s的地址是相同的。
应用程序正在获取局部变量的地址stu
。更改代码以获取切片元素的地址:
for i := range s {
m[s[i].Name] = &s[i]
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/0izo4gGPV7
归档时间: |
|
查看次数: |
208 次 |
最近记录: |