Sobes.tech
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.