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!