Sobes.tech
Junior — Middle

Как се осъществява достъп до стойностите в речник, който все още не е бил създаден предварително?

sobes.tech AI

Отговор от AI

В езика Go, ако речникът (map) все още не е създаден (т.е. е nil), опитът за достъп до елементи по ключ няма да предизвика паника, а просто ще върне нулевата стойност на типа на елементите.

Например:

var m map[string]int // m == nil
fmt.Println(m["key"]) // Ще изведе 0, няма да предизвика грешка

Обаче, опитът да се присвои стойност в nil речник ще доведе до паника:

m["key"] = 10 // паника: присвояване на елемент в nil речник

Затова преди да запишете в речник, трябва да се уверите, че е инициализиран, например:

m = make(map[string]int)
m["key"] = 10

По този начин, при четене може да се достъпва nil речник без грешки, но при писане е необходимо предварително да се създаде речникът.