Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich private Felder und Methoden in Go-Strukturen kapseln?

Wie kann ich private Felder und Methoden in Go-Strukturen kapseln?

Susan Sarandon
Susan SarandonOriginal
2024-11-17 08:32:03615Durchsuche

How can I Encapsulate Private Fields and Methods in Go Structs?

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!

Stellungnahme:
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