Maison > développement back-end > Golang > Comment puis-je ajouter des méthodes personnalisées aux types existants dans Go ?

Comment puis-je ajouter des méthodes personnalisées aux types existants dans Go ?

Linda Hamilton
Libérer: 2024-12-29 10:49:11
original
250 Les gens l'ont consulté

How Can I Add Custom Methods to Existing Types in Go?

Ajout de nouvelles méthodes aux types existants dans Go

Lorsque vous travaillez avec des types existants dans Go, il peut être nécessaire de les étendre avec des méthodes personnalisées pour améliorer les fonctionnalités. Cependant, comme l'indique l'exemple de code fourni, l'ajout direct de méthodes à des types non locaux est interdit.

Pour surmonter cette limitation, il existe principalement deux approches à considérer :

1. Définition d'un type de wrapper :

  • Créez un nouveau type de structure (par exemple, MyRouter) qui inclut le type d'origine sous forme de champs anonymes ou intégrés.
  • Exemple :

    type MyRouter struct {
      mux.Router // Anonymous field
    }
    
    func (m *MyRouter) F() { ... }
    
    r := &MyRouter{origRouter}
    r.F()
    Copier après la connexion

2. Incorporation du type d'origine :

  • Incorporez le champ de type d'origine dans un nouveau type de structure (par exemple, MyRouter).
  • Exemple :

    type MyRouter struct {
      *mux.Router // Embedded field
    }
    
    func (m *MyRouter) F() { ... }
    
    router := &MyRouter{origRouter}
    router.F()
    Copier après la connexion

Les deux approches vous permettent d'étendre les types existants sans modifier le package d'origine. En créant un nouveau type ou en intégrant celui d'origine, vous pouvez définir des méthodes supplémentaires pouvant fonctionner sur des instances de votre type personnalisé.

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