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
Libérer: 2024-11-29 16:27:10
original
306 Les gens l'ont consulté

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
}
Copier après la connexion

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal