Maison > développement back-end > Golang > le corps du texte

Comment remplacer les méthodes Struct intégrées dans Go ?

Barbara Streisand
Libérer: 2024-10-28 16:10:02
original
800 Les gens l'ont consulté

How to Override Embedded Struct Methods in Go?

Remplacement de la méthode de la structure intégrée 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 la méthode intégré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>
Copier après la connexion

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>
Copier après la connexion

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).

Exemple : remplacement et appel d'une méthode intégrée

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!