Ich bin wirklich von all den verschiedenen Arten in Go verwirrt, aber ich habe eine streng definierte Struktur ‚VMR‘ und ich versuche, ein Konvertit Daten zu tun zu ihm.Schnittstelle Umwandlung: Schnittstelle ist map [string] Schnittstelle {} nicht
Ich Abfrage CouchDB (die Go-SDK) und dann zu versuchen, die zurückgegebenen Daten in meine Struktur zu behaupten. Natürlich funktioniert das nicht und es löst Panik aus. Ich schieße im Dunkeln und versuche herauszufinden, was ich falsch mache.
Hier ist meine Funktion/Struktur:
type VMR struct {
Name string `json:"name,omitempty"`
InUse bool `json:"inuse"`
Description string `json:"description,omitempty"`
View string `json:"view,omitempty"`
Theme string `json:"theme,omitempty"`
Alias1 int `json:"alias1,omitempty"`
Alias1_Description string `json:"alias1_description,omitempty"`
Host_PIN int `json:"host_pin,omitempty"`
Allow_Guests bool `json:"allow_guests,omitempty"`
Guest_Pin int `json:"guest_pin,omitempty"`
Alias2 int `json:"alias2,omitempty"`
Alias2_Description string `json:"alias2_description,omitempty"`
}
func Get() VMR {
cluster, _ := gocb.Connect("couchbase://ip:port")
bucket, _ := cluster.OpenBucket("bucket", "password")
myQuery := gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE name='test42' LIMIT 1")
rows, _ := bucket.ExecuteN1qlQuery(myQuery, nil)
var row interface{}
rows.One(&row)
fmt.Printf("Query1: %+v\n", row)
return row.(VMR)
}
Volle Leistung:
Query1: map[115:map[alias1_description:Alias 1 description alias2_description:Alias description description:This is the best VMR name:test42 view:ViewOption theme:Theme51 alias1:1 alias2:1 guest_pin:1 host_pin:1 inuse:false]]
Fehler:
panic: interface conversion: interface is map[string]interface {}, not models.VMR
Was ist Ihr 'models.VMR' Typ? Kannst du seine Erklärung abgeben? – icza
warum nicht 'rows.One (& vmr)' –