Maison > développement back-end > Golang > Comment puis-je réutiliser du code lors de l'implémentation d'une méthode commune pour différents types dans Go ?

Comment puis-je réutiliser du code lors de l'implémentation d'une méthode commune pour différents types dans Go ?

DDD
Libérer: 2024-11-11 02:41:02
original
254 Les gens l'ont consulté

How can I reuse code when implementing a common method for different types in Go?

Implémentation de méthodes communes avec des interfaces dans Go

Dans Go, les interfaces fournissent un mécanisme permettant à différents types d'implémenter le même ensemble de méthodes, permettant pour le polymorphisme dans votre code. Cependant, vous pouvez parfois rencontrer une situation dans laquelle vous souhaitez que deux types distincts implémentent une méthode commune tout en évitant le code redondant.

Considérez le scénario suivant :

type First struct {
    str string
}

type Second struct {
    str string
}

type A interface {
    PrintStr()
}
Copier après la connexion

Pour implémenter la méthode PrintStr pour à la fois les structures First et Second, vous écrivez généralement les méthodes distinctes suivantes :

func (f First) PrintStr() {
    fmt.Print(f.str)
}

func (s Second) PrintStr() {
    fmt.Print(s.str)
}
Copier après la connexion

Bien que cette approche soit fonctionnelle, elle peut conduire à une duplication de code si vous ont plusieurs types qui doivent implémenter la même méthode. Pour surmonter ce problème, Go propose une solution élégante connue sous le nom d'incorporation de types.

Incorporation de types

L'incorporation de types vous permet de composer de nouveaux types en y incorporant des types existants. Dans ce cas, nous pouvons créer un type de base qui contient le champ str commun et la méthode PrintStr.

type WithString struct {
    str string
}

func (w WithString) PrintStr() {
    fmt.Print(w.str)
}
Copier après la connexion

Maintenant, nous pouvons intégrer le type WithString dans nos première et deuxième structures :

type First struct {
    WithString
}

type Second struct {
    WithString
}
Copier après la connexion

Ce faisant, les structures First et Second héritent de la méthode PrintStr du type WithString intégré. Cela élimine le besoin d'implémentations de méthodes distinctes pour chaque structure.

Exemple

Voici un exemple de la façon d'utiliser l'intégration de types pour implémenter une méthode commune pour deux types différents :

package main

import "fmt"

type WithString struct {
    str string
}

func (w WithString) PrintStr() {
    fmt.Print(w.str)
}

type First struct {
    WithString
}

type Second struct {
    WithString
}

func main() {
    a := First{
        WithString: WithString{
            str: "foo",
        },
    }

    a.PrintStr() // Outputs: foo
}
Copier après la connexion

Cette approche vous permet de conserver une seule implémentation pour la méthode commune tout en permettant son utilisation par différents types, favorisant ainsi le code réutilisabilité et réduction de la duplication de code.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal