パターン | 定義 | len | Read | Write |
---|---|---|---|---|
nil map | var nilMap map[string]int | 0 | できる | panic |
empty map literal | emptyMapLiteral := map[string]int{} | 0 | できる | できる |
nonempty map literal | teams := map[string][]string{"Orcas": {"Fred", "Ralph", "Bijou"},"Lions": {"Fred", "Ralph", "Bijou"},"Kittens": {"Fred", "Ralph", "Bijou"},} | n | できる | できる |
1. nil map
定義
var nilMap map[string]int
len
fmt.Printf("[nilMap] len: %v\n", len(nilMap)) //[nilMap] len: 0
読み取り
できる。値のzero valueを返す。この例だとintのzero value
fmt.Printf("[nilMap] read : %v\n", nilMap["apple"]) //[nilMap] read: 0
書き込み
panic起きる
nilMap["apple"] = 10 //panic: assignment to entry in nil map
2. empty map literal — non nil —
定義
emptyMapLiteral := map[string]int{}
len
fmt.Printf("[emptyMapLiteral] len: %v\n", len(emptyMapLiteral)) //[emptyMapLiteral] len: 0
読み取り
できる。値のzero valueを返す。この例だとintのzero value
fmt.Printf("[emptyMapLiteral] read: %v\n", emptyMapLiteral["apple"]) //[emptyMapLiteral] read: 0
書き込み
emptyMapLiteral["apple"] = 10 fmt.Printf("[emptyMapLiteral] read: %v\n", emptyMapLiteral["apple"]) //[emptyMapLiteral] read: 10
3. nonempty map literal — non nil —
定義
teams := map[string][]string{ "Orcas": {"Fred", "Ralph", "Bijou"}, "Lions": {"Fred", "Ralph", "Bijou"}, "Kittens": {"Fred", "Ralph", "Bijou"}, }
len
fmt.Printf("[teams] len: %v\n", len(teams)) //[teams] len: 3
読み取り
fmt.Printf("[teams] read: %v\n", teams["Orcas"]) //[teams] read: [Fred Ralph Bijou]
書き込み
teams["Lakers"] = []string{"A", "B", "C"} //[teams] read: [A B C]