I'm learning Go and have a C/C++ background. In the following example, is it safe to append the address of a into slice? When I run this example, the correct value (2) is printed, but wanted to be sure. If this is wrong, how should I do it?
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])
}