Junior — Middle
Каква е разликата между карта с нулева стойност и слайс, който съдържа нулева стойност?
sobes.tech AI
Отговор от AI
В Go, карта (map) с нулева стойност е карта, която не е инициализирана и е равна на nil. Опитът за запис в такава карта ще доведе до паника.
Slice с нулева стойност е nil-слайс, който не сочи към масив и има дължина и капацитет 0. Може да се използва безопасно, например за четене или предаване към функции.
Ключови разлики:
- map == nil означава, че картата не е инициализирана и не може да приема елементи.
- slice == nil означава, че слайсът е празен и не сочи към масив, но може да се използва за четене (ще бъде празен) и предаване.
Пример:
var m map[string]int // m == nil
// m["key"] = 1 // паника: присвояване към nil карта
var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // сега слайсът е инициализиран
Следователно, nil-картата не е подходяща за запис, а nil-слайсът е безопасен за четене и разширяване.