Maison >développement back-end >Golang >Comment puis-je accéder aux champs Struct via une interface dans Go ?

Comment puis-je accéder aux champs Struct via une interface dans Go ?

DDD
DDDoriginal
2024-11-29 16:27:10309parcourir

How Can I Access Struct Fields Through an Interface in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn