Sobes.tech
Junior — Middle

Jaký je rozdíl mezi mapou s nulovou hodnotou a řezem, který obsahuje nulovou hodnotu?

sobes.tech AI

Odpověď od AI

V jazyce Go je mapa (map) s nulovou hodnotou mapa, což znamená, že není inicializovaná a je rovna nil. Pokus o zápis do takové mapy způsobí panic.

Slice s nulovou hodnotou je nil-slice, který neukazuje na pole a má délku a kapacitu 0. Může být bezpečně použit například pro čtení nebo předání funkcím.

Klíčové rozdíly:

  • map == nil znamená, že mapa není inicializovaná a nemůže přijímat prvky.
  • slice == nil znamená, že slice je prázdný a neukazuje na pole, ale může být použit pro čtení (bude prázdný) a předání.

Příklad:

var m map[string]int // m == nil
// m["key"] = 1 // panic: přiřazení do nil mapy

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // nyní je slice inicializován

Tedy, nil-mapa není vhodná pro zápis, zatímco nil-slice je bezpečný pro čtení a rozšiřování.