Conversion du pointeur Struct en interface
Considérez le scénario suivant :
type foo struct{} func bar(baz interface{}) {}
Étant donné que foo et bar sont immuables et baz doit être restauré en un pointeur foo struct dans bar, le problème se pose : comment pouvez-vous lancer &foo{} en interface{} à utiliser comme paramètre dans la barre ?
Solution
La conversion de &foo{} en interface{} est simple :
f := &foo{} bar(f) // Every type implements interface{}. No special action is needed.
Pour revenir à *foo, vous pouvez effectuer soit :
Tapez 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 Switch
func bar(baz interface{}) { switch f := baz.(type) { case *foo: // f is of type *foo default: // f is some other type } }
En utilisant ces techniques, vous pouvez convertir avec succès des pointeurs de structure en interfaces et les restaurer en pointeurs de structure au sein des fonctions.
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!