Sobes.tech
Junior — Middle

Millised toimingud on lubatud Map-tüüpi muutujaga, mis pole veel initsialiseeritud?

sobes.tech AI

Vastus AI-lt

Go keeles muutuja map tüüp väärtus on vaikimisi nil, kui see pole initsialiseeritud.

nil-mapiga on lubatud järgmised toimingud:

  • Väärtuse lugemine võtme järgi — tagastab tüübi nullväärtuse ja märguande, et võti puudub.
  • Võtme olemasolu kontrollimine kasutades value, ok := map[key].

Mittemõeldud toimingud:

  • Kirjutamine (väärtuse määramine võtmele) põhjustab panic-i.
  • Funktsioonide kutsumine, mis muudavad kaarti (näiteks delete) nil-kaardil on ohutu ja ei põhjusta panic-i.

Näide:

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

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

// m["key"] = 10 // panic: määramine `nil`-kaardile

delete(m, "key") // ohutu, ei tee midagi

Kaardi kasutamiseks kirjutamiseks tuleb see initsialiseerida, näiteks make abil:

m = make(map[string]int)
m["key"] = 10 // nüüd töötab