Junior — Middle
Kuo skiriasi žemėlapis su nuline verte ir sluoksnis, kuris turi nuline verte?
sobes.tech AI
Atsakymas iš AI
Go kalboje, žemėlapis (map) su nuline verte yra žemėlapis, kuris nėra inicializuotas ir lygus nil. Bandymas rašyti į tokį žemėlapį sukels paniką.
Nulinės vertės skaidulą (slice) yra nil-skaidulė, kuri nerodo į masyvą ir turi ilgį bei talpą 0. Ją galima saugiai naudoti, pavyzdžiui, skaitymui ar perdavimui funkcijoms.
Pagrindiniai skirtumai:
- map == nil reiškia, kad žemėlapis nėra inicializuotas ir negali priimti elementų.
- slice == nil reiškia, kad skaidulė yra tuščia ir nerodo į masyvą, tačiau ją galima naudoti skaitymui (bus tuščia) ir perdavimui.
Pavyzdys:
var m map[string]int // m == nil
// m["key"] = 1 // panika: priskyrimas nil žemėlapiui
var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // dabar skaidulė yra inicializuota
Todėl, nil-žemėlapis nėra tinkamas rašymui, o nil-skaidulė yra saugi skaitymui ir plėtimui.