Sobes.tech
Назад к вопросам
Junior — Middle
85

В чем отличие между картой (map) с нулевым значением и слайсом, который содержит нулевое значение?

Компании, где спрашивали
Digital Spirit

Ответ от нейросети

sobes.tech AI

В Go карта (map) с нулевым значением — это карта, которая не инициализирована и равна nil. Попытка записи в такую карту приведёт к панике.

Слайс с нулевым значением — это nil-слайс, который не указывает на массив и имеет длину и ёмкость 0. Его можно безопасно использовать, например, для чтения или передачи в функции.

Ключевые отличия:

  • map == nil означает, что карта не инициализирована и не может принимать элементы.
  • slice == nil означает, что слайс пуст и не указывает на массив, но его можно использовать для чтения (будет пустым) и передачи.

Пример:

var m map[string]int // m == nil
// m["key"] = 1 // panic: assignment to entry in nil map

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // теперь слайс инициализирован

Таким образом, nil-карта не пригодна для записи, а nil-слайс — безопасен для чтения и расширения.