Ich versuche, eine generische Methode in Go zu erstellen, die eine structVerwendung 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?
unsafePaket 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.DecodeAnrufe einzuwickeln . Aber das ist doppelt so viel .
encoding/jsonPaket, um diesen Zwischenschritt auszuführen . Können Sie eine Beispielzuordnung und eine Beispielstruktur angeben, für die diese Methode verwendet werden könnte?