Können Sie in Go unveränderliche Strukturen erstellen?

Mary-Kate Olsen
Freigeben: 2024-11-12 03:32:02
Original
1004 Leute haben es durchsucht

Can You Create Immutable Structs in Go?

Unveränderliche Strukturen in Go

Frage: Ist es möglich, eine unveränderliche Struktur in Go zu erstellen und dies einmal sicherzustellen? initialisiert, können nur Lesevorgänge für seine Felder durchgeführt werden, ohne deren Werte zu ändern? Wenn ja, wie kann dies erreicht werden?

Antwort:

In Go sind Strukturen von Natur aus veränderbar. Mit bestimmten Techniken ist es jedoch möglich, eine Struktur außerhalb ihres Pakets schreibgeschützt zu machen. So geht's:

Definieren einer unveränderlichen Struktur:

Definieren Sie eine Struktur mit nicht exportierten Feldern (Felder, die mit Kleinbuchstaben beginnen). Dies verhindert den direkten Zugriff auf die Felder von außerhalb des Pakets.

package mypackage

type myReadOnly struct {
  value int
}
Nach dem Login kopieren

Bereitstellung von Lesefunktionen:

Erstellen Sie Lesefunktionen, die auf die privaten Felder der Struktur zugreifen können. Diese Funktionen geben Kopien der Felder zurück und stellen so sicher, dass die Originalwerte unverändert bleiben.

func (s myReadOnly) Value() int {
  return s.value
}
Nach dem Login kopieren

Initialisierung der unveränderlichen Struktur:

Erstellen Sie eine Funktion, die die Struktur initialisiert und gibt eine Instanz zurück. Diese Funktion wird verwendet, um neue Instanzen der unveränderlichen Struktur zu erstellen.

func NewMyReadOnly(value int) myReadOnly{
  return myReadOnly{value: value}
}
Nach dem Login kopieren

Verwendung:

Um die unveränderliche Struktur zu verwenden, importieren Sie das Paket und erstellen Sie eine Instanz mit die Initialisierungsfunktion. Greifen Sie mithilfe der Lesefunktionen auf die Felder zu.

myReadOnly := mypackage.NewMyReadOnly(3)
fmt.Println(myReadOnly.Value()) // Prints 3
Nach dem Login kopieren

In diesem Beispiel führt jeder Versuch, das Wertfeld der myReadOnly-Instanz zu ändern, zu einem Kompilierungsfehler, da das Feld nicht exportiert wird. Die Lesefunktion Value bietet eine Möglichkeit, auf das Feld zuzugreifen, ohne es zu ändern. Dieser Ansatz schafft effektiv eine unveränderliche Struktur in Go.

Das obige ist der detaillierte Inhalt vonKönnen Sie in Go unveränderliche Strukturen erstellen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage