L'exemple de code est le suivant :
func main() { var a Integer = 1 var b Integer = 1 sum := a.Add(b) fmt.Println(sum) var i interface{} = a sum = i.(Integer).Add(b) // 报错 fmt.Println(sum) } type Integer int func (a *Integer) Add(b Integer) Integer { return *a + b }
Le message d'erreur est le suivant :
test\testVar.go:16:19: cannot call pointer method on i.(Integer) test\testVar.go:16:19: cannot take the address of i.(Integer)
Cette situation se produit car la méthode Add nécessite un type de pointeur entier Le récepteur, et le i.(Integer)
que nous avons passé est une valeur, et cette valeur n'est affectée à aucune variable, donc le symbole "&" ne peut pas obtenir l'adresse.
La bonne méthode consiste à attribuer i.(Integer)
à une variable ou à changer le récepteur de méthode en un type normal.
Les exemples de code sont les suivants :
var i interface{} = a c := i.(Integer) sum = c.Add(b) fmt.Println(sum)
ou
func (a Integer) Add(b Integer) Integer { return a + b }
Articles et tutoriels connexes recommandés : tutoriel golang
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!