Remplacement des méthodes de structure intégrées dans Golang
Dans Golang, lorsqu'une structure intègre une autre structure (appelée intégration), les champs de la structure intégrée et les méthodes deviennent directement accessibles à la structure d'intégration. Cependant, si la structure d'intégration redéfinit une méthode à partir de la structure intégrée, elle peut remplacer la méthode d'origine.
Considérez le code suivant :
<code class="go">type Base struct { val int } func (b *Base) Set(i int) { b.val = i } type Sub struct { Base changed bool }</code>
Nous avons intégré Base dans Sub. Maintenant, si nous essayons d'accéder à la méthode Set de Base depuis Sub, elle sera masquée par la propre méthode Set de Sub :
<code class="go">func t16() { s := &Sub{} // This calls Base's Set method s.Base.Set(1) // This causes an error, as s.Set hides Base's Set s.Set(10) }</code>
Pour remplacer ce comportement, nous pouvons redéfinir la méthode Set de Sub pour appeler explicitement la méthode Set de Base :
<code class="go">func (b *Sub) Set(i int) { b.Base.Set(i) b.changed = true }</code>
Maintenant, lorsque nous appellerons s.Set(), il invoquera la méthode Set de Base tout en nous permettant de suivre les modifications dans Sub.
<code class="go">func t16() { s := &Sub{} // Calls Sub's overridden Set method s.Set(10) fmt.Printf("%+v\n", s) // Output: {Base:{val:10} changed:true} }</code>
Cette méthode vous permet de remplacez les méthodes de la structure intégrée tout en conservant l'accès à la méthode d'origine via le champ de structure intégrée.
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!