Étant donné l'extrait de code suivant :
type foo struct {} func bar(baz interface{}) {}
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?
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.
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. }
Type de commutateur :
func bar(baz interface{}) { switch f := baz.(type) { case *foo: // f is of type *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!