Ответ
Да, можно передать nil map в цикл, но это приведёт к панике при попытке записи в map. Чтение из nil map безопасно и вернёт нулевое значение для типа элемента.
Пример:
var m map[string]int // nil map
// Чтение безопасно
for k, v := range m {
fmt.Println(k, v) // Не выполнится, так как map пустая
}
// Запись вызовет панику
m["key"] = 1 // panic: assignment to entry in nil map
Перед использованием map нужно инициализировать её с помощью make:
m := make(map[string]int)
m["key"] = 1 // OK