A map maps keys to values. The zero value of a map is nil
. A nil
map has no keys, nor can keys be added.
The make
function returns a map of the given type, initialized and ready for use.
Example
Copy package main
import "fmt"
type Vertex struct {
Lat, Long, float64
}
var m map[string]Vertex
func main() {
m = make(map[string]Vertex)
m["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
fmt.Println(m["Bell Labs"])
}
Map Literals
Map literals are like struct literals, but the keys are required.
Example
Copy package main
import "fmt"
type Vertex struct {
Lat, Long float64
}
var m = map[string]Vertex{
"Bell Labs": Vertex{
40.68433, -74.39967,
},
"Google": Vertex{
37.42202, -122.08408,
},
}
func main() {
fmt.Println(m)
}
Copy map[Bell Labs:{40.68433 -74.39967} Google:{37.42202 -122.08408}]
Shorter version
Copy package main
import "fmt"
type Vertex struct {
Lat, Long float64
}
var m = map[string]Vertex{
"Bell Labs": {40.68433, -74.39967}, // type Vertex ignored here
"Google": {37.42202, -122.08408}, // type Vertex ignored here
}
func main() {
fmt.Println(m)
}
Copy map[Bell Labs:{40.68433 -74.39967} Google:{37.42202 -122.08408}]
Map Mutations
Insert or update an element in map m
:
m[key] = elem
Retrieve an element:
elem = m[key]
Delete an element:
delete(m, key)
Test that a key is present with a two-value assignment:
elem, ok := m[key]
If key
is in m
, ok
is true
. If not, ok
is false
.
If key
is not in the map, then elem
is the zero value for the map's element type.
Example
Copy package main
import "fmt"
func main() {
m := make(map[string]int)
m["Answer"] = 42
fmt.Println("The value:", m["Answer"])
m["Answer"] = 48
fmt.Println("The value:", m["Answer"])
delete(m, "Answer")
fmt.Println("The value:", m["Answer"])
v, ok := m["Answer"]
fmt.Println("The value:", v, "Present?", ok)
}
Copy The value: 42
The value: 48
The value: 0
The value: 0 Present? false