Maison >développement back-end >Golang >Pourquoi ne puis-je pas appeler une méthode pointeur sur le résultat d'un appel de fonction Go ?
Comprendre les erreurs « Impossible de prendre l'adresse de » et « Impossible d'appeler la méthode du pointeur sur »
Lorsque vous travaillez avec Go, vous pouvez rencontrer des erreurs tels que « impossible de prendre l'adresse de » ou « impossible d'appeler la méthode du pointeur », déroutant ceux qui apprennent le langage.
Le problème :
Considérez le code Go suivant :
diff := projected.Minus(c.Origin) dir := diff.Normalize() // error: cannot call pointer method on Vector3 // Vector3 methods func (a *Vector3) Minus(b Vector3) Vector3 { ... } func (a *Vector3) Normalize() Vector3 { ... }
La deuxième ligne provoque des erreurs de compilation car Vector3.Normalize() nécessite un récepteur de pointeur, ce qui signifie qu'il attend un pointeur vers une valeur Vector3 (*Vector3) au lieu d'un Vector3 value.
Pourquoi cela se produit :
Les valeurs de retour des appels de fonction et de méthode ne sont pas adressables dans Go. Par conséquent, dans le deuxième exemple, le compilateur ne peut pas prendre l'adresse du résultat de Vector3.Minus(), l'empêchant d'appeler Normalize() sur cette valeur.
Solutions possibles :
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!