私は現在golangを学んでおり、次のコードを持っています。 アイデアは、それにポインタの数を持つオブジェクトを持っている、私は変更し、ポインタのいずれかを使用してオブジェクトを削除したいと思います。 Go:ポインタでオブジェクトを削除する
package main
import "fmt"
type obj struct {
a int
b string
}
func main() {
o1 := &obj{1, "hello"}
o2 := &obj{2, "world"}
m := map[string]*obj{
"foo": o1,
"bar": o2,
}
fmt.Printf("1: %t %v\n", o1, o1)
fmt.Println("2:", m, m["foo"], o1)
o1.b = "WWWW"
fmt.Println("3:", m, m["foo"], o1)
o1 = nil
fmt.Println("4:", m, m["foo"], o1)
}
http://play.golang.org/p/lqQviVuTQN
出力:
1: &{%!t(int=1) %!t(string=hello)} &{1 hello}
2: map[foo:0x10434120 bar:0x10434130] &{1 hello} &{1 hello}
3: map[foo:0x10434120 bar:0x10434130] &{1 WWWW} &{1 WWWW}
4: map[foo:0x10434120 bar:0x10434130] &{1 WWWW} <nil>
私は期待どおり、オブジェクトの内部を変更すると動作します(#3)。 しかし実際のオブジェクト(#4)を削除しようとすると、実際のオブジェクトに触れることなくポインタ自体がnil
と思われます。
私には何が欠けていますか?