Maison >développement back-end >Golang >Comment puis-je utiliser des paramètres de méthode et des interfaces génériques pour traiter les deux tranches d'objets Mammifères et Humains dans Golang ?
Paramètres de méthode génériques dans Golang
Dans Golang, pour permettre à une fonction d'accepter n'importe quel type, des paramètres de méthode génériques peuvent être utilisés. Lorsqu'une méthode nécessite un type possédant une propriété particulière, des interfaces peuvent être utilisées. Vous trouverez ci-dessous un exemple dans lequel une fonction doit accepter des types possédant une propriété ID.
<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 } func (h HumanImpl) GetHairColor() string { return h.HairColor }</code>
Dans ce code, les interfaces ont été définies ainsi que leurs implémentations intégrées pour Mammal et Humain. Cela garantit que les deux types peuvent être utilisés dans la fonction Count, qui accède désormais indirectement à la propriété ID via la méthode GetID.
<code class="go">func Count(ms []Mammal) *[]string { IDs := make([]string, len(ms)) for i, m := range ms { IDs[i] = strconv.Itoa(m.GetID()) } return &IDs }</code>
En utilisant des paramètres et des interfaces de méthode génériques, cette fonction peut désormais traiter à la fois des tranches d'objets Mammifère et Humain.
Voici le code de fonctionnement complet :
<code class="go">import ( "fmt" "strconv" ) type Mammal interface { GetID() int GetName() string } type Human interface { Mammal GetHairColor() string } 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 } func (h HumanImpl) GetHairColor() string { return h.HairColor } func Count(ms []Mammal) *[]string { IDs := make([]string, len(ms)) for i, m := range ms { IDs[i] = strconv.Itoa(m.GetID()) } return &IDs } func main() { 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"}, } numberOfMammalIDs := Count(mammals) numberOfHumanIDs := Count(humans) fmt.Println(numberOfMammalIDs) fmt.Println(numberOfHumanIDs) }</code>
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!