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 :
Exemple :
type MyRouter struct { mux.Router // Anonymous field } func (m *MyRouter) F() { ... } r := &MyRouter{origRouter} r.F()
2. Incorporation du type d'origine :
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!