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

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

Patricia Arquette
Libérer: 2024-10-26 14:08:31
original
304 Les gens l'ont consulté

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

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

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!

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!