我正在学习 Go 并且有 C/C++ 背景。在下面的示例中,将地址附加a到切片中是否安全?当我运行此示例时,2会打印正确的值 ( ),但需要确定一下。如果这是错误的,我该怎么做?
func add(mapping map[string]*[]*int) {
sliceptr := &[]*int{}
mapping["foo"] = sliceptr
ele := mapping["foo"]
a := 2
// won't address of `a` go out of scope?
ele2 := append(*ele, &a)
mapping["foo"] = &ele2
}
func main() {
mapping := map[string]*[]*int{}
add(mapping)
fmt.Println(*(*mapping["foo"])[0])
}
撒科打诨
相关分类