Sobes.tech
Junior — Middle

Կարող է ստանալ որոշակի տարրին հասցեն, որը պահվում է ասոցացյոնային աղյուսակում (Map):

sobes.tech AI

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

Go լեզվում հնարավոր չէ ուղղակի ստանալ կոնկրետ տարրի հասցեն, որը պահվում է map-ում: Դա կապված է այն բանի հետ, որ քարտայի տարրերը կարող են տեղաշարժվել հիշողության մեջ փոփոխությունների ժամանակ, և կոմպիլատորը թույլ չի տալիս վերցնել արժեքի հասցեն ինդեքսավորության միջոցով, որպեսզի խուսափել սխալներից:

Օրինակ, հետևյալ կոդը չի կ compile-վի:

m := map[string]int{"a": 1}
p := &m["a"] // սխալ՝ չի կարելի վերցնել m["a"] հասցեն

Եթե անհրաժեշտ է աշխատել արժեքի հասցեի հետ, կարող եք պահել ցուցիչներ կամ կառուցվածքներ map-ում և վերցնել նրանց հասցեն:

m := map[string]*int{"a": new(int)}
*m["a"] = 42

Կամ պատճենել արժեքը map-ից փոփոխական և վերցնել նրա հասցեն։