Assignment to entry in nil map

Why does this program panic?

var m map[string]float64
m["pi"] = 3.1416
panic: assignment to entry in nil map


You have to initialize the map using the make function (or a map literal) before you can add any elements:

m := make(map[string]float64)
m["pi"] = 3.1416

A new, empty map value is made using the built-in function make, which takes the map type and an optional capacity hint as arguments:

make(map[string]int, 100)
The initial capacity does not bound its size: maps grow to accommodate the number of items stored in them, with the exception of nil maps. A nil map is equivalent to an empty map except that no elements may be added. The Go Programming Language Specification: Map types

See Maps explained for more about maps.

Share this page: