Heim > Artikel > Backend-Entwicklung > Wie kann ich private Felder und Methoden in Go-Strukturen kapseln?
Kapselung privater Felder und Methoden für Strukturen
In Go ist es wichtig, das Konzept der Sichtbarkeit für Felder und Methoden innerhalb von Strukturen zu verstehen. Standardmäßig gelten Felder und Methoden, die mit Großbuchstaben beginnen, als exportiert und können von jedem externen Code oder Paketen aufgerufen werden, die das Paket importieren und die Struktur deklarieren.
Beachten Sie den folgenden Code:
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") }
In diesem Beispiel werden die Felder „Größe“ und „Hash“ sowie die Methode „doPrivate“ aufgrund ihrer Anfangsbuchstaben alle exportiert. Das bedeutet, dass jeder Code außerhalb des mypackage-Pakets auf diese Mitglieder zugreifen kann.
Um jedoch die doPrivate-Methode zu kapseln und externen Zugriff zu verhindern, können wir die Paketsichtbarkeitsregeln von Go nutzen. Indem wir die mytype-Struktur und ihre doPrivate-Methode in einem separaten Paket platzieren, können wir sie nur für Typen innerhalb dieses Pakets zugänglich machen.
So können wir dies erreichen:
// 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() }
Durch die Trennung der Struktur und ihrer privaten Methode in einem separaten Paket stellen wir sicher, dass nur Typen innerhalb des mytype-Pakets auf die doPrivate-Methode zugreifen können. Andere Pakete, einschließlich mypackage, können weiterhin die Do-Methode verwenden, um auf die öffentlichen Mitglieder der Type-Struktur zuzugreifen, sie können jedoch nicht direkt auf die doPrivate-Methode zugreifen.
Das obige ist der detaillierte Inhalt vonWie kann ich private Felder und Methoden in Go-Strukturen kapseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!