Junior — Middle
Kāda ir atšķirība starp karti ar nulles vērtību un šķēli, kas satur nulles vērtību?
sobes.tech AI
Atbilde no AI
Go valodā, karte (map) ar nulles vērtību ir karte, kas nav inicializēta un ir vienāda ar nil. Mēģinājums rakstīt šādā kartē izraisīs paniku.
Sēkļa ar nulles vērtību ir nil-sēkla, kas neparāda uz masīvu un ir ar garumu un ietilpību 0. To var droši izmantot, piemēram, lasīšanai vai nodošanai funkcijām.
Galvenās atšķirības:
- map == nil nozīmē, ka karte nav inicializēta un nevar pieņemt elementus.
- slice == nil nozīmē, ka sēkla ir tukša un neparāda uz masīvu, bet to var izmantot lasīšanai (tiks uzskatīta par tukšu) un nodošanai.
Piemērs:
var m map[string]int // m == nil
// m["key"] = 1 // panika: piešķiršana nil-kartei
var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // tagad sēkla ir inicializēta
Tādējādi, nil-karte nav piemērota rakstīšanai, bet nil-sēkla ir droša lasīšanai un paplašināšanai.