Maison >développement back-end >Golang >Comment puis-je accéder aux champs Struct via une interface dans Go ?
Accès aux champs d'interface dans Go
Lorsque vous travaillez avec des interfaces dans Go, il est important de comprendre que vous ne pouvez pas accéder directement aux champs du type sous-jacent via une interface. Une variable d'interface peut stocker n'importe quelle valeur conforme à l'interface, mais elle ne fournit pas d'accès direct aux champs de la valeur.
Dans l'extrait de code fourni, la fonction SearchItemsByUser renvoie une valeur d'interface{}. Pour accéder aux champs de données, tels que Params, vous devez utiliser l'assertion de type pour accéder au type de structure spécifique derrière l'interface.
Pour ce faire, vous pouvez modifier le code comme suit :
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 }
Maintenant, vous pouvez utiliser directement la valeur renvoyée :
func test(w http.ResponseWriter, r *http.Request) { result := search.SearchItemsByUser(r) fmt.Fprintf(w, "%s", result.Params) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!