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
Linda Hamiltonoriginal
2024-12-29 10:49:11293parcourir

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()

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()

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!

Déclaration:
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