Map Nil Safety
Problem
Reading from nil map returns zero value. Writing to nil map panics.
Pattern
WRONG - Write to nil map
var m map[string]int // nil map
m["key"] = 42 // PANIC: assignment to entry in nil map
CORRECT - Initialize with make
m := make(map[string]int)
m["key"] = 42 // OK
Reading is Safe
var m map[string]int // nil map
v := m["key"] // OK, v = 0 (zero value)
v, ok := m["key"] // OK, v = 0, ok = false
Quick Fix
Defensive Pattern
if m == nil {
m = make(map[string]int)
}
m["key"] = 42