Impossible de créer des champs et des méthodes privés pour les structures dans un package
Question :
Est-il possible de définir le champ et la méthode d'une structure comme privés dans un package Go, accessibles uniquement aux membres de cette structure, mais pas par d'autres fonctions du package ou du code externe ?
Contexte :
Considérez l'extrait de 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 ce cas, la taille et les champs de hachage et la méthode doPrivate doivent être encapsulés dans mytype, inaccessibles aux autres types.
Réponse :
Bien que Go vous permette d'exporter ou de masquer un identifiant en fonction de sa majuscule, le concept de membres de classe privés ou de masquage de données n'existe pas dans Go.
Par convention, les identifiants exportés (initialisés par une majuscule) sont destinés à un usage public au sein d'un package. À l'inverse, les identifiants non exportés (initialisés avec une lettre minuscule) ont un accès restreint au sein de ce package.
Cependant, au sein d'un package donné, il n'existe aucun moyen de restreindre davantage l'accès aux membres de la structure au-delà de la portée de ce package. Pour réaliser l'encapsulation des données, l'approche suggérée consiste à créer un package séparé dans lequel la structure entière et ses méthodes associées sont les seuls éléments définis dans ce package.
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!