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
Libérer: 2024-12-02 16:23:12
original
782 Les gens l'ont consulté

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

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

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

Type Changer :

func bar(baz interface{}) {
    switch f := baz.(type) {
    case *foo: // f is a *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