Maison  >  Article  >  développement back-end  >  Comment puis-je encapsuler des champs et des méthodes privés dans Go Structs ?

Comment puis-je encapsuler des champs et des méthodes privés dans Go Structs ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-17 08:32:03615parcourir

How can I Encapsulate Private Fields and Methods in 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!

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