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 ?

Comment puis-je utiliser des interfaces et des types intégrés pour créer des méthodes génériques dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 01:20:02446parcourir

How can I use interfaces and embedded types to create generic methods in 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!

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
Article précédent:Type de résultat en PHPArticle suivant:Type de résultat en PHP