Maison >développement back-end >Golang >Comment puis-je convertir un pointeur *foo en interface{} et revenir en arrière ?

Comment puis-je convertir un pointeur *foo en interface{} et revenir en arrière ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-02 16:23:12803parcourir

How Do I Convert a *foo Pointer to interface{} and Back in Go?

Conversion des pointeurs de structure en interface{}

Étant donné des déclarations de type immuables telles que les suivantes :

type foo struct {}

func bar(baz interface{}) {}

Où baz doit être reconverti en un pointeur *foo dans la barre, cet article explique comment convertir &foo{} en un interface{} à utiliser comme paramètre dans bar.

Cast &foo Pointeur vers interface{}**

Conversion d'un pointeur *foo en une interface{} est simple :

f := &foo{}
bar(f) // Every type implements interface{}.

Conversion interface{}Retour à foo*

Pour récupérer la valeur *foo depuis l'interface{}, deux approches sont disponibles :

Assertion de type :

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // baz is not a *foo
    }

    // f is a *foo
}

Type Changer :

func bar(baz interface{}) {
    switch f := baz.(type) {
    case *foo: // f is a *foo
    default: // f is some other type
    }
}

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