var m map[string]int; fmt.Println(m["key"])?Чтение из nil map в Go не вызывает panic. Возвращается zero value типа значения. Для map[string]int это 0. Поэтому fmt.Println(m["key"]) выведет 0. Такое же значение вернулось бы для отсутствующего ключа в инициализированной map. Отличие nil map от пустой - только при записи: в nil map писать нельзя (panic).
var m map[string]int
fmt.Println(m["key"]) // 0
fmt.Println(len(m)) // 0