Sobes.tech
Junior — Middle

Оё имкон дорад, ки арзиш аз харитае, ки ҳанӯз инициализатсия нашудааст, гирифта шавад?

sobes.tech AI

Ҷавоб аз AI

Дар Go, агар харита (map) оғоз нашуда бошад (яъне, баробар ба nil бошад), кӯшиши гирифтани арзиш аз он бо калид панаикаро ба вуҷуд намеорад, балки танҳо арзиши сифрро барои навъи арзиш ва рамзи false бармегардонад, ки нишон медиҳад, ки калид вуҷуд надорад.

Масалан:

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

value, ok := m["key"]
fmt.Println(value, ok) // Натиҷа: 0 false

Аммо, агар кӯшиш кунед, ки арзишро ба харитае, ки оғоз нашудааст, нависед, панаика ба амал меояд:

m["key"] = 10 // панаика: таъин ба вуруди дар харитаи nil

Аз ин рӯ, барои истифодаи бехатари харита, бояд онро оғоз диҳед, масалан, бо ёрии make:

m = make(map[string]int)
m["key"] = 10 // ҳоло дуруст кор мекунад