ich eine Funktion erstellen bin versucht, dieConvert Schnittstelle {} zur Karte in Golang
*struct
[]*struct
map[string]*struct
Hier struct folgende annehmen könnte könnte jede Struktur nicht nur ein spezifisches. Converting interface zu *struct
oder []*struct
funktioniert gut. Aber Fehler für Karte geben.
Nach reflect zeigt es, dass es map [] ist, aber einen Fehler gibt, wenn Sie versuchen, über den Bereich zu iterieren.
Hier Code
package main
import (
"fmt"
"reflect"
)
type Book struct {
ID int
Title string
Year int
}
func process(in interface{}, isSlice bool, isMap bool) {
v := reflect.ValueOf(in)
if isSlice {
for i := 0; i < v.Len(); i++ {
strct := v.Index(i).Interface()
//... proccess struct
}
return
}
if isMap {
fmt.Printf("Type: %v\n", v) // map[]
for _, s := range v { // Error: cannot range over v (type reflect.Value)
fmt.Printf("Value: %v\n", s.Interface())
}
}
}
func main() {
b := Book{}
b.Title = "Learn Go Language"
b.Year = 2014
m := make(map[string]*Book)
m["1"] = &b
process(m, false, true)
}
Gibt es eine Möglichkeit interface{}
zu konvertieren abzubilden und durchlaufen oder es Elemente zu erhalten.
Schön. Ich habe die "MapKeys" zu meinem Antwortteil hinzugefügt, als du deine gepostet hast! – cnicutar
Arbeiten absolut gut. Danke vielmals. – SamTech