_Maps_ are Go's built-in [associative data type](http://en.wikipedia.org/wiki/Associative_array) (sometimes called _hashes_ or _dicts_ in other languages). | ||
package main |
||
import "fmt" |
||
func main() { |
||
To create an empty map, use the builtin `make`: `make(map[key-type]val-type)`. | m := make(map[string]int) |
|
Set key/value pairs using typical `name[key] = val` syntax. | m["k1"] = 7 |
|
m["k2"] = 13 |
||
Printing a map with e.g. `fmt.Println` will show all of its key/value pairs. | fmt.Println("map:", m) |
map: map[k1:7 k2:13] |
Get a value for a key with `name[key]`. | v1 := m["k1"] |
|
fmt.Println("v1: ", v1) |
v1: 7 |
|
The builtin `len` returns the number of key/value pairs when called on a map. | fmt.Println("len:", len(m)) |
len: 2 |
The builtin `delete` removes key/value pairs from a map. | delete(m, "k2") |
|
fmt.Println("map:", m) |
map: map[k1:7] |
|
The optional second return value when getting a value from a map indicates if the key was present in the map. This can be used to disambiguate between missing keys and keys with zero values like `0` or `""`. Here we didn't need the value itself, so we ignored it with the _blank identifier_ `_`. | _, prs := m["k2"] |
|
fmt.Println("prs:", prs) |
prs: false |
|
You can also declare and initialize a new map in the same line with this syntax. | n := map[string]int{"foo": 1, "bar": 2} |
|
fmt.Println("map:", n) |
map: map[bar:2 foo:1] |
|
} |