Maison >développement back-end >Golang >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 ?

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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 15:01:021013parcourir

How can I use generic method parameters in Go to make a Count function work with any type that has an ID property?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn