Maison > développement back-end > Golang > Pouvez-vous rendre les champs et les méthodes de structure privés dans les packages Go ?

Pouvez-vous rendre les champs et les méthodes de structure privés dans les packages Go ?

DDD
Libérer: 2024-11-15 10:10:02
original
679 Les gens l'ont consulté

Can you make struct fields and methods private in Go packages?

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")
}
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal