Maison >développement back-end >Golang >Comment remplacer les méthodes Struct intégrées dans Go ?
Dans Go, lorsqu'une structure hérite d'une autre structure (appelée intégration), elle hérite de tous les champs et méthodes de la structure intégrée structurer. Cependant, si la structure héritante définit sa propre méthode avec le même nom que celle de la structure intégrée, la méthode intégrée est masquée, ou plutôt masquée.
Remplacer une méthode intégrée La méthode dans la structure intégrée implique d'accéder explicitement à la méthode de la structure intégrée en utilisant la syntaxe :
<code class="go">yourStruct.EmbeddedStruct.method()</code>
Par exemple :
<code class="go">type Base struct { val int } func (b *Base)Set(i int) { b.val = i } type Sub struct { Base changed bool }</code>
Ici, Sub intègre Base. Cependant, la méthode Set de Sub remplace la méthode Set de Base. Pour appeler la méthode Set originale de Base depuis Sub, il faudrait appeler explicitement b.Base.Set(i).
Considérez le code suivant :
<code class="go">func t16() { s := &Sub{} s.Set(1) var b *Base = &s.Base fmt.Printf("%+v\n", b) fmt.Printf("%+v\n", s) }</code>
Initialement, la méthode Set de Sub est invoquée, ce qui remplace la méthode Set de Base. Pour démontrer le comportement original de la méthode Set de Base, on peut appeler s.Base.Set(10):
<code class="go">func t16() { s := &Sub{} s.Base.Set(10) var b *Base = &s.Base fmt.Printf("%+v\n", b) fmt.Printf("%+v\n", s) }</code>
Cela garantit que la méthode Set d'origine de Base est invoquée, en contournant la méthode Set personnalisée de Sub et sa modification ultérieure. de changé.
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!