Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können Sie in Go unveränderliche Strukturen erstellen?

Wie können Sie in Go unveränderliche Strukturen erstellen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-16 08:24:03412Durchsuche

How Can You Create Immutable Structures in Go?

Verwendung unveränderlicher Strukturen in Go

In Go kann es sein, dass Sie eine unveränderliche Struktur benötigen, die eine Änderung ihrer Felder nach der Initialisierung verhindert . Dies kann in bestimmten Szenarien die Datenintegrität und -sicherheit verbessern.

Um Unveränderlichkeit für eine Struktur in Go zu erreichen, können Sie eine Technik anwenden, bei der ihre Mitglieder nicht exportiert werden und schreibgeschützte Funktionen für den Zugriff auf ihre Werte bereitgestellt werden. So können Sie dies implementieren:

package mypackage

type myImmutable struct {
  value int
}

func (s myImmutable) Value() int {
  return s.value
}

In diesem Beispiel hat die myImmutable-Struktur einen nicht exportierten Feldwert. Um auf den Wert des Felds außerhalb des Pakets zuzugreifen, stellen wir eine Getter-Funktion Value() bereit.

Die Initialisierung der Struktur kann mithilfe einer Konstruktorfunktion erfolgen, die eine neue Instanz erstellt und den Wert festlegt:

func NewMyImmutable(value int) myImmutable {
  return myImmutable{value: value}
}

Die Verwendung Ihrer unveränderlichen Struktur würde wie folgt aussehen:

myImmutable := mypackage.NewMyImmutable(3)
fmt.Println(myImmutable.Value())  // Prints 3

Durch die Verwendung von Gettern für den Zugriff auf die Strukturen Felder enthält, führt jeder Versuch, sie außerhalb des Pakets zu ändern, zu einem Compilerfehler. Dieser Ansatz macht die Struktur effektiv unveränderlich.

Das obige ist der detaillierte Inhalt vonWie kö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