Maison > développement back-end > Golang > Comment puis-je étendre les types existants dans Go sans modifier le code d'origine ?

Comment puis-je étendre les types existants dans Go sans modifier le code d'origine ?

Susan Sarandon
Libérer: 2024-12-17 07:46:24
original
580 Les gens l'ont consulté

How Can I Extend Existing Types in Go Without Modifying the Original Code?

Extension de types existants dans Go

Dans Go, l'extension de types existants à partir de différents packages n'est pas directement prise en charge. Cependant, il existe des techniques alternatives pour obtenir des fonctionnalités similaires.

Adoption des champs anonymes

Une approche consiste à définir un nouveau type qui intègre le type existant en tant que champ anonyme. Cela vous permet de définir des méthodes supplémentaires sur votre nouveau type sans modifier l'original. Voici un exemple :

type MyRoute struct {
    mux.Route
}

func (r *MyRoute) Subroute(tpl string, h http.Handler) *mux.Route {
    return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
Copier après la connexion

Intégration directe

Une autre option consiste à intégrer directement le type existant en tant que champ nommé et à utiliser les pointeurs pour accéder et étendre le type intégré.

type MyRouter struct {
    *mux.Router
}

func (r *MyRouter) Subroute(tpl string, h http.Handler) *mux.Route {
    return r.Router.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
Copier après la connexion

Envisagez des packages d'extension

Dans certains cas, il peut être possible de créer un package d'extension qui fournit des fonctionnalités supplémentaires à types existants. Cependant, cela nécessite de modifier le code source du package d'origine et n'est généralement pas recommandé pour les bibliothèques partagées.

Le verdict

L'approche appropriée dépend des exigences spécifiques et des limites de votre projet. Si vous devez accéder et modifier directement le type existant, l'intégration peut être appropriée. Pensez à utiliser des champs anonymes si vous souhaitez masquer le type sous-jacent de l'API. Explorez les packages d'extension si vous avez la liberté de modifier le code source d'origine.

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