Lors du portage d'une bibliothèque C vers Go, un développeur a rencontré une erreur en tentant de définir Go méthodes avec le même nom mais des signatures différentes. Plus précisément, le message d'erreur « Go Language·SetOption redéclaré dans ce bloc » est apparu. Cela a incité le développeur à se demander si Go prend en charge la surcharge de fonctions ou de méthodes.
Go ne prend pas en charge la surcharge de fonctions ou de méthodes. Cette décision est détaillée dans la FAQ Go Language, en particulier dans la section sur la surcharge :
"La répartition des méthodes est simplifiée si elle n'a pas besoin de faire également la correspondance de type. L'expérience avec d'autres langages nous a montré qu'avoir un une variété de méthodes portant le même nom mais des signatures différentes était parfois utile, mais cela pouvait aussi être déroutant et fragile en pratique. La correspondance uniquement par nom et exigeant une cohérence dans les types était une décision de simplification majeure dans le type de Go. système."
Bien que Go n'ait pas de surcharge traditionnelle, il est possible de simuler certaines de ses fonctionnalités à l'aide de fonctions variadiques, qui ont été introduites dans les versions ultérieures du langage. . Les fonctions variadiques permettent de transmettre un nombre arbitraire d'arguments à une fonction. Cependant, cette approche comporte un compromis, car elle diminue la vérification de 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!