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

Comment la composition de types peut-elle rationaliser la mise en œuvre de méthodes dans Go ?

Linda Hamilton
Libérer: 2024-10-26 19:40:30
original
563 Les gens l'ont consulté

 How Can Type Composition Streamline Method Implementation in Go?

Golang : adoption de la composition de types pour l'implémentation de méthodes unifiées

Dans la programmation orientée objet, différentes structures peuvent parfois partager un champ ou une fonctionnalité commune. Pour gérer de tels scénarios, une pratique courante consiste à définir une interface que les deux structures implémentent. Cependant, cette approche nécessite de définir des méthodes distinctes pour chaque structure, ce qui conduit à une duplication de code.

Une approche plus efficace consiste à exploiter le principe de composition de types. Au lieu d'utiliser des interfaces, nous pouvons définir un type personnalisé représentant le champ partagé (par exemple, Version dans l'exemple fourni). Étant donné que les types personnalisés peuvent servir de récepteurs de méthodes, nous pouvons créer une méthode pour ce type, puis l'intégrer dans les deux structures.

Considérez l'implémentation suivante :

<code class="go">type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}

type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version            Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version            Version
}</code>
Copier après la connexion

Maintenant, nous pouvons utiliser la méthode PrintVersion sur les structures Game et ERP :

<code class="go">func main() {

    g := Game{
        "Fear Effect",
        false,
        "Action-Adventure",
        "1.0.0",
    }

    g.PrintVersion()
    // Version is 1.0.0


    e := ERP{
        "Logo",
        true,
        []string{"ms-sql"},
        "2.0.0",
    }

    e.PrintVersion()
    // Version is 2.0.0

}</code>
Copier après la connexion

Cette approche élimine la duplication de code et fournit une manière unifiée d'imprimer le version pour les deux structures. De plus, il peut être étendu pour gérer d'autres domaines ou fonctionnalités courants.

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!