Junior — Middle
Ҳаракатҳое, ки бо тағйирёбандаи навъи Map, ки ҳанӯз инициализатсия нашудааст, иҷозат дода мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, тағйирёбандаи навъи map ба таври пешфарзӣ арзиши nil дорад, агар он инициализатсия нашуда бошад.
Бо map nil имкон дорад амалҳои зерин:
- Хондани арзиш аз рӯи калид — арзиши сифрии навъи ва рамзи набудани калидро бармегардонад.
- Санҷиши мавҷудияти калид бо истифода аз
value, ok := map[key].
Амалиётҳое, ки иҷозат дода намешаванд:
- Навишт (таъин кардани арзиш ба калид) боиси panic мешавад.
- Звон кардани функсияҳое, ки харитаи маълумотро тағйир медиҳанд (масалан,
delete) дарmapnilбехатар аст ва panic намекунад.
Масал:
var m map[string]int // m == nil
v, ok := m["key"] // ok == false, v == 0
// m["key"] = 10 // panic: таъин ба map-и nil
delete(m, "key") // бехатар, чизе намекунад
Барои истифодаи харита барои навишт, бояд онро инициализатсия кард, масалан, бо истифода аз make:
m = make(map[string]int)
m["key"] = 10 // акнун кор мекунад