Maison >développement back-end >Golang >Comment puis-je utiliser des interfaces et des types intégrés pour créer des méthodes génériques dans Go ?
Paramètres de méthode génériques dans Golang
Dans Go, il est possible de définir des méthodes génériques qui fonctionnent avec différents types, offrant une plus grande flexibilité et une plus grande réutilisabilité du code . Pour résoudre le problème dans le code fourni, nous explorerons l'utilisation des interfaces et des types intégrés.
Utilisation des interfaces
Les interfaces définissent un ensemble de méthodes qu'un type doit implémenter pour satisfaire l’interface. En utilisant des interfaces dans les paramètres de méthode, nous pouvons découpler la méthode de types spécifiques, lui permettant d'être utilisée avec n'importe quel type qui implémente l'interface.
Considérez le code suivant :
<code class="go">type Mammal interface { GetID() int GetName() string }</code>
Ici , Mammal définit une interface avec deux méthodes : GetID et GetName.
Embedding Interfaces
Les interfaces embarquées nous permettent de créer des types qui héritent des méthodes d'une ou plusieurs interfaces. Par exemple, le type Human peut intégrer l'interface Mammal :
<code class="go">type Human struct { MammalImpl HairColor string }</code>
Implémentation
Ensuite, nous devons implémenter les méthodes GetID et GetName pour MammalImpl et HumanImpl . Puisque HumanImpl intègre MammalImpl, il hérite des implémentations de GetID et GetName :
<code class="go">type MammalImpl struct { ID int Name string } func (m MammalImpl) GetID() int { return m.ID } func (m MammalImpl) GetName() string { return m.Name } type HumanImpl struct { MammalImpl HairColor string }</code>
Modification de la fonction Count
Maintenant, nous pouvons modifier la fonction Count pour accepter un tranche de n'importe quel type qui satisfait l'interface Mammal :
<code class="go">func Count(ms []Mammal) *[]string { IDs := make([]string, len(ms)) for i, m := range ms { IDs[i] = strconv.Itoa(m.GetID()) // Access ID via the method: GetID() } return &IDs }</code>
Création de tranches de mammifères et d'humains
Enfin, nous pouvons créer des tranches de différents types qui implémentent Mammal :
<code class="go">mammals := []Mammal{ MammalImpl{1, "Carnivorious"}, MammalImpl{2, "Ominivorious"}, } humans := []Mammal{ HumanImpl{MammalImpl: MammalImpl{ID: 1, Name: "Peter"}, HairColor: "Black"}, HumanImpl{MammalImpl: MammalImpl{ID: 2, Name: "Paul"}, HairColor: "Red"}, }</code>
Conclusion
En utilisant des interfaces et des types intégrés, nous pouvons créer des méthodes génériques qui fonctionnent avec différents types de données, offrant plus de flexibilité et de réutilisabilité du code dans les programmes Go .
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!