Junior — Middle
Aký je rozdiel medzi mapou s nulovou hodnotou a rezeom, ktorý obsahuje nulovú hodnotu?
sobes.tech AI
Odpoveď od AI
V jazyku Go je mapa (map) s nulovou hodnotou mapa, čo znamená, že nie je inicializovaná a je rovná nil. Pokus o zápis do takejto mapy spôsobí panic.
Slice s nulovou hodnotou je nil-slice, ktorý neukazuje na pole a má dĺžku a kapacitu 0. Môže byť bezpečne použitý, napríklad na čítanie alebo odovzdanie funkciám.
Kľúčové rozdiely:
- map == nil znamená, že mapa nie je inicializovaná a nemôže prijímať prvky.
- slice == nil znamená, že slice je prázdny a neukazuje na pole, ale môže byť použitý na čítanie (bude prázdny) a odovzdanie.
Príklad:
var m map[string]int // m == nil
// m["key"] = 1 // panic: priradenie do nil mapy
var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // teraz je slice inicializovaný
Teda, nil-mapa nie je vhodná na zápis, zatiaľ čo nil-slice je bezpečný na čítanie a rozširovanie.