Maison >développement back-end >Golang >Comment remplacer la méthode d'une structure intégrée dans Go ?
Remplacer les méthodes de structure intégrées dans Go
Lors de l'intégration d'une structure dans Go, les méthodes de la structure intégrée deviennent disponibles en tant que membres de niveau supérieur du structure d'intégration. Cela permet un accès facile aux fonctionnalités de la structure intégrée. Cependant, si la structure d'intégration implémente sa propre méthode portant le même nom, la méthode de la structure intégrée sera masquée.
Considérez l'exemple suivant :
<code class="go">package main import "fmt" type Base struct { val int } func (b *Base)Set(i int) { b.val = i } type Sub struct { Base changed bool } func (b *Sub)Set(i int) { b.val = i b.changed = true } func main() { s := &Sub{} s.Base.Set(1) var b *Base = &s.Base fmt.Printf("%+v\n", b) fmt.Printf("%+v\n", s) }</code>
Dans cet exemple, la structure Sub intègre la structure de base. La structure Base a une méthode Set, qui est masquée par la propre méthode Set de la structure Sub. Lorsque s.Base.Set(1) est appelé, la méthode Set de la structure Base est invoquée, et non la méthode Set de la structure Sub.
Pour remplacer la méthode de la structure intégrée dans la structure d'intégration, vous pouvez simplement appeler la méthode intégrée méthode de struct à partir de la méthode de la structure d'intégration. Par exemple, le code suivant remplacerait la méthode Set de la structure Base dans la structure Sub :
<code class="go">func (b *Sub)Set(i int) { b.Base.Set(i) b.changed = true }</code>
Avec ce changement, lorsque s.Set(1) est appelé, la méthode Set de la structure Sub sera invoquée, qui appellera la méthode Set de la structure de base et définira également le champ modifié sur true. Cela vous permet de remplacer le comportement de la méthode de la structure intégrée tout en ayant toujours accès aux fonctionnalités de la 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!