Sobes.tech
Junior — Middle

Ի՞նչ դեպքերում է անվտանգ տվյալներ կարդալ Map-ից, որը դեռ չի եղել հստակ ինիցիալիզացված։

sobes.tech AI

Պատասխան AI-ից

Go-ում, map-ից ընթերցումը, որը չի եղել հստակ ինիցիալիզացված (այսինքն, nil է), անվտանգ է, բայց սահմանափակումներով:

Եթե mapnil է, ապա՝

  • Արժեքի ընթերցումը ըստ բանալիի վերադարձնում է արժեքի զրոյական արժեքը և false՝ ստուգելով բանալիի առկայությունը:
  • Նշանակումը (գրառումը) նման map-ում կհանգեցնի panic-ի:

Օրինակ՝

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

value, ok := m["key"] // անվտանգ, value == 0, ok == false

// m["key"] = 10 // panic: նշանակում nil-մապում

Ահա թե ինչու՝ ընթերցումը map-ից անվտանգ է, եթե այն չի սկսվել, բայց գրառումը՝ ոչ։ Գրառելու համար նախ պետք է make-ով սկսել map-ը։