Maison > Article > développement back-end > Comment puis-je utiliser des paramètres de méthode génériques dans Go pour faire fonctionner une fonction Count avec n'importe quel type possédant une propriété ID ?
Utilisation des paramètres de méthode génériques dans Go
Les génériques Go offrent une flexibilité dans la définition de méthodes et de structures de données pouvant fonctionner avec différents types de données. Dans ce cas spécifique, la tâche à accomplir consiste à modifier la fonction Count pour accepter tout type possédant une propriété ID.
Solution basée sur l'interface
Basée sur l'interface les solutions permettent de séparer les comportements des types concrets. En utilisant des interfaces, nous pouvons résumer les caractéristiques communes aux différents types de données.
<code class="go">type IDed interface { GetID() int }</code>
Cette interface définit une méthode unique, GetID, qui renvoie un entier. Différents types peuvent implémenter cette interface, permettant à la fonction Count de fonctionner avec n'importe quel type qui satisfait l'interface.
ImplStruct Implementation
Pour implémenter cela, nous définissons un deuxième type , ImplStruct, qui embarque l'interface IDed. Ce type comprend une méthode GetID et un champ Name supplémentaire.
<code class="go">type ImplStruct struct { IDed Name string }</code>
Fonction Count modifiée
La fonction Count peut désormais accepter tout type qui implémente l'interface IDed, ce qui signifie qu'il peut fonctionner à la fois avec les types Mammifères et Humains.
<code class="go">func Count(data []IDed) []string { ids := make([]string, len(data)) for i, m := range data { ids[i] = strconv.Itoa(m.GetID()) } return ids }</code>
Utilisation
Avec la fonction Count modifiée et le type ImplStruct, nous pouvons désormais compter les identifiants pour les types Mammifères et Humains.
<code class="go">mammals := []ImplStruct{ ImplStruct{ID: 1, Name: "Carnivorious"}, ImplStruct{ID: 2, Name: "Ominivorious"}, } humans := []ImplStruct{ ImplStruct{ID: 1, Name: "Peter"}, ImplStruct{ID: 2, Name: "Paul"}, } fmt.Println(Count(mammals)) fmt.Println(Count(humans))</code>
Conclusion
Dans ce code amélioré, l'interface abstraite IDed et ImplStruct intégré permettent à la fonction Count de fonctionner avec n'importe quel type qui implémente la méthode GetID. Cette approche offre flexibilité et modularité dans la gestion de différents types de données avec une fonctionnalité commune.
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!