Maison > développement back-end > Golang > Comment puis-je convertir un pointeur Struct en une valeur d'interface {} dans Go ?

Comment puis-je convertir un pointeur Struct en une valeur d'interface {} dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-01 03:14:10
original
535 Les gens l'ont consulté

How Can I Convert a Struct Pointer to an interface{} Value in Go?

Conversion des pointeurs de structure en valeurs d'interface{}

Étant donné l'extrait de code suivant :

type foo struct {}

func bar(baz interface{}) {}
Copier après la connexion

où foo et bar sont immuables par conception , comment pouvez-vous convertir un pointeur de structure &foo{} en une valeur d'interface{} et l'utiliser ensuite comme paramètre pour la barre function?

Solution

La conversion d'un pointeur de structure vers une valeur d'interface{} est simple :

f := &foo{}
bar(f) // Every type implements interface{}, so no special action is required.
Copier après la connexion

La récupération du pointeur *foo d'origine à partir de la valeur d'interface{} nécessite soit une assertion de type, soit un commutateur de type.

Type Assertion :

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // The assertion failed because baz was not of type *foo.
    }

    // f is of type *foo.
}
Copier après la connexion

Type de commutateur :

func bar(baz interface{}) {
    switch f := baz.(type) {
    case *foo: // f is of type *foo.
    default: // f is some other type.
    }
}
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal