Dans le royaume de Golang, la surcharge de méthodes nous permet de définir plusieurs méthodes avec le même nom mais des signatures différentes. Ce concept devient intrigant lorsque l’on se penche sur la composition structurée à l’aide d’intégrations. Explorons une question qui se pose dans ce contexte.
Considérez l'extrait de code suivant :
type Human struct { name string age int phone string } type Employee struct { Human company string } func (h *Human) SayHi() { fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone) } func (e *Employee) SayHi() { fmt.Printf("Hi, I am %s, I work at %s. Call me on %s\n", e.name, e.company, e.phone) }
Pouvons-nous invoquer le Les méthodes de la structure "base" (humaine) utilisant une syntaxe telle que sam.Human.SayHi()?
Les intégrations dans Golang offrent un moyen transparent d'accéder aux membres de la structure intégrée dans la structure parent. Pour invoquer la méthode SayHi de la structure humaine sur une instance Employee, nous utilisons simplement :
sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"} sam.SayHi() // calls Employee.SayHi sam.Human.SayHi() // calls Human.SayHi
La sortie :
Hi, I am Sam, I work at Golang Inc. Call me on 111-888-XXXX Hi, I am Sam you can call me on 111-888-XXXX
Go permet les invocations de méthodes imbriquées sur les structures intégrées, permettant l'accès au méthodes héritées même après une surcharge de méthode.
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!