Sobes.tech
Junior — Middle

Milyen műveletek megengedettek egy még nem inicializált Map típusú változóval?

sobes.tech MI

Válasz az MI-től

Go nyelvben egy map típusú változó alapértelmezés szerint nil értéket kap, ha nem inicializálták.

Egy nil map esetén a következő műveletek megengedettek:

  • Érték olvasása kulcs alapján — ez a típus nullértékét és egy kulcs hiányát jelző zászlót ad vissza.
  • Ellenőrizni a kulcs létezését az value, ok := map[key] segítségével.

Nem megengedett műveletek:

  • Írás (érték hozzárendelése kulcshoz) panic-hez vezet.
  • Függvényhívások, amelyek módosítják a térképet (pl. delete) egy nil térképen biztonságosak és nem okoznak panic-et.

Példa:

var m map[string]int // m == nil

v, ok := m["key"] // ok == false, v == 0

// m["key"] = 10 // panic: nil mapbe írás

delete(m, "key") // biztonságos, nem csinál semmit

A térkép írásra való használatához inicializálni kell, például a make segítségével:

m = make(map[string]int)
m["key"] = 10 // most már működik