2012-12-18 23 views
5

golang.org adresinden Git Oyun Alanı'nı kullanarak bir simple program yazdım.Git: harita değerlerinin yerine düzenleme

çıkışı besbelli: harita olduğu yerde değerini düzenlemek için bir yol

second test 
first test 

var mı? Biliyorum, a.Things[key]'un izini alamam. Yani, a.Things[key] = firstTest ayarını yapmanın tek yolu var mı? Belki bir fonksiyon ile ChangeThing(key string, value string)?

cevap

6

Harita işaretleyicilerinizin değerlerini başka bir yapıya getirerek yapabilirsiniz.

http://play.golang.org/p/UouwDGuVpi

package main 

import "fmt" 

type A struct { 
    Things map[string]*str 
} 

type str struct { 
    s string 
} 

func (a A) ThingWithKey(key string) *str { 
    return a.Things[key] 
} 

func main() { 
    variable := A{} 

    variable.Things = make(map[string]*str) 
    variable.Things["first"] = &str{s:"first test"} 

    firstTest := variable.ThingWithKey("first") 
    firstTest.s = "second test" 

    fmt.Println(firstTest.s) 
    fmt.Println(variable.ThingWithKey("first").s) 
} 
+0

teşekkür ederiz harita değeri olarak bir işaretçi kullanabilirsiniz! Bunun hakkında düşünmedim. Öneriniz benim için harika çalışıyor. – Donovan

3
+0

Teşekkürler, bu yardımcı oldu. – Donovan

+0

Aslında bunu denedim, ancak derleyici bir dizenin tam metnini almama izin vermiyordu. Gördüğünüz gibi, önce dizgiyi bir değişkene atayarak ve sonra değişkenin adresini alarak. Merak ediyorum ki bir struct initialization'ın adresini alabilirim ama bir string başlatma değil. – Daniel

İlgili konular