Maison > Article > développement back-end > Comment puis-je encapsuler des champs et des méthodes privés dans Go Structs ?
Encapsuler des champs et des méthodes privés pour les structures
Dans Go, il est essentiel de comprendre le concept de visibilité des champs et des méthodes au sein des structures. Par défaut, les champs et les méthodes commençant par des majuscules sont considérés comme exportés et sont accessibles par tout code externe ou package qui importe le package déclarant la structure.
Considérez le code suivant :
package mypackage type mytype struct { Size string Hash uint32 } func (r *mytype) doPrivate() string { return r.Size } func (r *mytype) Do() string { return doPrivate("dsdsd") }
Dans cet exemple, les champs Size et Hash, ainsi que la méthode doPrivate, sont tous exportés en raison de leurs majuscules initiales. Cela signifie que tout code extérieur au package mypackage peut accéder à ces membres.
Cependant, pour encapsuler la méthode doPrivate et empêcher l'accès externe, nous pouvons exploiter les règles de visibilité des packages de Go. En plaçant la structure mytype et sa méthode doPrivate dans un package séparé, nous pouvons les rendre accessibles uniquement aux types de ce package.
Voici comment y parvenir :
// mytype.go package mytype type Type struct { Size string Hash uint32 } func (r *Type) doPrivate() string { return r.Size }
// mypackage.go package mypackage import "./mytype" func (r *mytype.Type) Do() string { return r.doPrivate() }
En séparant la structure et sa méthode privée dans un package séparé, nous garantissons que seuls les types du package mytype peuvent accéder à la méthode doPrivate. D'autres packages, y compris mypackage, peuvent toujours utiliser la méthode Do pour accéder aux membres publics de la structure Type, mais ils ne peuvent pas accéder directement à la méthode doPrivate.
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!