Back to questions
Junior — Middle
87
В чем отличие между картой (map) с нулевым значением и слайсом, который содержит нулевое значение?
Companies where asked
Digital Spirit
Answer from AI
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-слайс — безопасен для чтения и расширения.