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

Comment Go réalise-t-il le remplacement de méthode sans héritage traditionnel ?

Mary-Kate Olsen
Libérer: 2024-11-16 00:55:03
original
629 Les gens l'ont consulté

How does Go achieve method overriding without traditional inheritance?

Remplacement de méthode Golang

Dans Go, le concept de remplacement de méthode est réalisé à l'aide d'interfaces plutôt que par l'héritage comme en Java. Les interfaces définissent un contrat de méthodes sans préciser leur implémentation.

Implémentation du remplacement de méthode dans Go :

Utilisation des interfaces :

  1. Définissez une interface avec la signature de méthode que vous souhaitez remplacer.
  2. Définissez un type qui implémente l'interface et fournit l'implémentation de remplacement.
  3. Dans le type d'origine, utilisez le type d'interface comme un paramètre à la méthode à remplacer.

Exemple :

// Interface for Get() method
type Getter interface {
    Get() string
}

// Base type with original implementation
type Base struct{}

func (base *Base) Get() string {
    return "base"
}

// Custom type with overriding implementation
type Sub struct {
    Base
}

func (sub *Sub) Get() string {
    return "Sub"
}
Copier après la connexion

Avantage :

  • Préserve le comportement existant de Base tout en fournissant la possibilité de remplacer la méthode Get().

Approche alternative utilisant la composition :

  1. Définir une structure qui intègre le type d'origine et inclut l'implémentation de substitution.
  2. Utilisez le type intégré pour accéder à la fonctionnalité d'origine.

Exemple :

// Sub type with composition
type Sub struct {
    Base
    custom string
}

func (sub *Sub) Get() string {
    // Access the original method via embedded Base
    if sub.custom == "" {
        return sub.Base.Get()
    }
    return sub.custom
}
Copier après la connexion

Avantage :

  • Maintient une définition de type unique sans nécessiter de types d'interface supplémentaires.

Remarque :

  • Soyez conscient que l'utilisation de cette approche peut casser le code existant qui suppose le comportement du type d'origine.
  • L'accent mis par Go sur la composition et le typage canard favorise l'utilisation d'interfaces pour le remplacement de méthode, plutôt que substitution traditionnelle basée sur l'héritage.

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