Heim > Backend-Entwicklung > Golang > Können Sie Strukturfelder und -methoden in Go-Paketen privat machen?

Können Sie Strukturfelder und -methoden in Go-Paketen privat machen?

DDD
Freigeben: 2024-11-15 10:10:02
Original
686 Leute haben es durchsucht

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

Private Felder und Methoden für Strukturen in einem Paket können nicht erstellt werden

Frage:

Ist es möglich, das Feld und die Methode einer Struktur innerhalb eines Go-Pakets als privat festzulegen, auf die nur Mitglieder dieser Struktur zugreifen können, nicht jedoch andere Paketfunktionen oder externer Code?

Kontext:

Bedenken Sie den folgenden Codeausschnitt:

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")
}
Nach dem Login kopieren

In diesem Fall sollten die Größen- und Hashfelder sowie die doPrivate-Methode in mytype gekapselt werden, sodass für andere Typen kein Zugriff möglich ist.

Antwort:

Während Go es Ihnen ermöglicht, einen Bezeichner basierend auf seiner Groß- und Kleinschreibung zu exportieren oder auszublenden, gibt es in Go kein Konzept für private Klassenmitglieder oder das Ausblenden von Daten.

Konventionell sind exportierte Bezeichner (mit einem Großbuchstaben initialisiert) für die öffentliche Verwendung innerhalb eines Pakets vorgesehen. Umgekehrt haben nicht exportierte Bezeichner (mit einem Kleinbuchstaben initialisiert) eingeschränkten Zugriff innerhalb dieses Pakets.

Innerhalb eines bestimmten Pakets gibt es jedoch keine Möglichkeit, den Zugriff auf Strukturmitglieder über diesen Paketbereich hinaus weiter einzuschränken. Um eine Datenkapselung zu erreichen, besteht der vorgeschlagene Ansatz darin, ein separates Paket zu erstellen, in dem die gesamte Struktur und die zugehörigen Methoden die einzigen in diesem Paket definierten Elemente sind.

Das obige ist der detaillierte Inhalt vonKönnen Sie Strukturfelder und -methoden in Go-Paketen privat machen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage