Heim >Backend-Entwicklung >Golang >Können Sie in Go unveränderliche Strukturen erstellen?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-12 03:32:021087Durchsuche

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
}

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
}

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}
}

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

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!

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