(go17.1)
package main import ( "fmt" ) func main() { fmt.Println("---a := map[string]bool{}") a := map[string]bool{} fmt.Printf("%v\n", a) fmt.Printf("%v\n", a["hoge"]) fmt.Println("---a[\"hoge\"] = true") a["hoge"] = true fmt.Printf("%v\n", a) fmt.Printf("%v\n", a["hoge"]) fmt.Println("--- make(map[string]bool)") // a を空に a = make(map[string]bool) fmt.Printf("%v\n", a) fmt.Printf("%v\n", a["hoge"]) fmt.Println("---a[\"hoge\"] = true") a["hoge"] = true fmt.Printf("%v\n", a) fmt.Printf("%v\n", a["hoge"]) fmt.Println("---a = nil") // a に nil を入れると空になるが a = nil fmt.Printf("%v\n", a) fmt.Printf("%v\n", a["hoge"]) fmt.Println("---a[\"fuga\"] = true") // a に nil を入れた後に要素を入れるとエラーになる a["moge"] = true fmt.Printf("%v\n", a) fmt.Printf("%v\n", a["moge"]) }
実行結果
---a := map[string]bool{} map[] false ---a["hoge"] = true map[hoge:true] true --- make(map[string]bool) map[] false ---a["hoge"] = true map[hoge:true] true ---a = nil map[] false ---a["fuga"] = true panic: assignment to entry in nil map goroutine 1 [running]: main.main() /Users/hoge/examples/hoge.go:36 +0x790 exit status 2