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!