Zugriff auf Schnittstellenfelder in Go
Bei der Arbeit mit Schnittstellen in Go ist es wichtig zu verstehen, dass Sie über nicht direkt auf die Felder des zugrunde liegenden Typs zugreifen können eine Schnittstelle. Eine Schnittstellenvariable kann jeden Wert speichern, der der Schnittstelle entspricht, bietet jedoch keinen direkten Zugriff auf die Felder des Werts.
Im bereitgestellten Codeausschnitt gibt die SearchItemsByUser-Funktion einen Interface{}-Wert zurück. Um auf Datenfelder wie Parameter zuzugreifen, müssen Sie die Typzusicherung verwenden, um auf den spezifischen Strukturtyp hinter der Schnittstelle zuzugreifen.
Dazu können Sie den Code wie folgt ändern:
package search type results struct { Hits hits NbHits int NbPages int HitsPerPage int ProcessingTimeMS int Query string Params string } func SearchItemsByUser(r *http.Request) results { var Result results er := json.Unmarshal(body, &Result) if er != nil { fmt.Println("error:", er) } return Result }
Jetzt können Sie den zurückgegebenen Wert direkt verwenden:
func test(w http.ResponseWriter, r *http.Request) { result := search.SearchItemsByUser(r) fmt.Fprintf(w, "%s", result.Params) }
Das obige ist der detaillierte Inhalt vonWie kann ich über eine Schnittstelle in Go auf Strukturfelder zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!