Maison  >  Article  >  développement back-end  >  Comment remplacer la méthode d'une structure intégrée dans Go ?

Comment remplacer la méthode d'une structure intégrée dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 14:08:31295parcourir

How do I override an embedded struct's method in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn