Ich versuche, eine generische Methode in Go zu erstellen, die eine struct
Verwendung von Daten aus a füllt map[string]interface{}
. Die Signatur und Verwendung der Methode könnte beispielsweise folgendermaßen aussehen:
func FillStruct(data map[string]interface{}, result interface{}) {
...
}
type MyStruct struct {
Name string
Age int64
}
myData := make(map[string]interface{})
myData["Name"] = "Tony"
myData["Age"] = 23
result := &MyStruct{}
FillStruct(myData, result)
// result now has Name set to "Tony" and Age set to 23
Ich weiß, dass dies mit JSON als Vermittler möglich ist. Gibt es eine andere effizientere Möglichkeit, dies zu tun?
unsafe
Paket geben ... aber ich wage es nicht, es zu versuchen. Davon abgesehen ist eine Reflexion erforderlich, da Sie in der Lage sein müssen, die einem Typ zugeordneten Metadaten abzufragen, um Daten in seine Eigenschaften einzufügen. Es wäre ziemlich einfach, dies in json.Marshal
+ json.Decode
Anrufe einzuwickeln . Aber das ist doppelt so viel .
encoding/json
Paket, um diesen Zwischenschritt auszuführen . Können Sie eine Beispielzuordnung und eine Beispielstruktur angeben, für die diese Methode verwendet werden könnte?