Maison >développement back-end >Golang >Comment les interfaces et les pointeurs permettent-ils un comportement polymorphe dans Go ?
Polymorphisme dans Go - Comprendre l'utilisation de l'interface et du pointeur
Le polymorphisme, la capacité pour un objet d'adopter différents comportements en fonction de son type, est un concept fondamental en programmation. Bien que Go ne prenne pas explicitement en charge le polymorphisme de la même manière que les langages orientés objet, il propose des mécanismes qui peuvent obtenir des effets similaires.
Prenons un exemple simple dans lequel vous souhaitez créer une interface avec des méthodes getter et setter. Cependant, vous rencontrez un problème où les méthodes de définition ne sont pas autorisées. En effet, le type de récepteur dans les fonctions (méthodes) Go doit correspondre au type concret.
Pour remédier à cette limitation, Go introduit des pointeurs, désignés par un astérisque (*). Un pointeur vers un type contient l'adresse mémoire de la valeur réelle, vous permettant de manipuler cette valeur indirectement.
Dans votre code, le problème avec la méthode setter est que ce MyStruct n'est pas un pointeur. Cela signifie que toutes les modifications apportées au sein de la méthode sont perdues une fois la fonction terminée.
La version corrigée de votre code, telle que fournie dans la réponse, utilise un récepteur de pointeur pour la méthode Set :
func (this *MyStruct) Set(i int) { this.data = i }
En utilisant un pointeur, la méthode Set peut désormais modifier l'instance MyStruct réelle référencée par l'interface.
Bien que cette technique ne soit pas strictement polymorphisme, il démontre l'utilisation d'interfaces et de pointeurs pour obtenir des résultats similaires. Dans Go, les interfaces définissent un contrat qui garantit la présence de certaines méthodes dans un type, tandis que les pointeurs permettent une manipulation indirecte des valeurs, permettant un comportement plus flexible et dynamique.
Par conséquent, la réponse illustre efficacement comment les interfaces et les pointeurs peuvent être combinés pour obtenir une forme de polymorphisme dans Go, vous permettant de créer un code cohérent et maintenable qui s'adapte à différents types d'objets.
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!