Maison > développement back-end > Golang > Comment puis-je convertir un pointeur de structure vers une interface dans Go et accéder en toute sécurité au pointeur d'origine ?

Comment puis-je convertir un pointeur de structure vers une interface dans Go et accéder en toute sécurité au pointeur d'origine ?

Patricia Arquette
Libérer: 2024-12-21 02:31:09
original
488 Les gens l'ont consulté

How Can I Cast a Structure Pointer to an Interface in Go and Safely Access the Original Pointer?

Casting d'un pointeur de structure vers une interface dans Go

Dans Go, il est souvent nécessaire de convertir des valeurs de différents types en interfaces. Les interfaces sont une fonctionnalité puissante qui permet le polymorphisme des types, permettant au code de fonctionner avec différents types sans vérifier explicitement leurs types spécifiques.

Considérez le code suivant :

type foo struct{}

func bar(baz interface{}) {
    // Do something with baz
}
Copier après la connexion

Dans cet exemple, nous avoir une structure foo et une barre de fonctions qui accepte un paramètre de type interface{}. Notre objectif est de passer un pointeur vers une structure foo comme paramètre à bar.

Pour y parvenir, nous pouvons simplement lancer le pointeur en utilisant la syntaxe d'assertion de type :

f := &foo{}
bar(f) // Cast &f to an interface{}
Copier après la connexion

Cependant, après le casting, nous devrons peut-être accéder au pointeur de structure foo d'origine à l'intérieur de la fonction bar. Pour ce faire, nous pouvons utiliser soit une assertion de type, soit un commutateur de type :

Assertion de type :

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // Handle the case where baz is not a pointer to a foo struct
    }

    // Use f as a *foo pointer
}
Copier après la connexion

Commutateur de type :

func bar(baz interface{}) {
    switch f := baz.(type) {
    case *foo:
        // Use f as a *foo pointer
    default:
        // Handle other cases
    }
}
Copier après la connexion

En utilisant ces techniques, nous pouvons travailler de manière transparente à la fois avec l'interface et le pointeur de structure d'origine, offrant ainsi flexibilité et sécurité de frappe dans notre code.

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