Heim >Backend-Entwicklung >Golang >Wie erstelle ich unveränderliche Strukturen in Go?

Wie erstelle ich unveränderliche Strukturen in Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-04 17:33:17991Durchsuche

How to Create Immutable Structs in Go?

Erstellen unveränderlicher Strukturen in Go

Unveränderliche Strukturen erlauben nach der Initialisierung nur Lesevorgänge für ihre Felder ohne die Möglichkeit einer Änderung. Um dies in Go zu erreichen, ist ein etwas anderer Ansatz erforderlich als in einigen anderen Sprachen.

Die Lösung

So erstellen Sie unveränderliche Strukturen in Go:

  1. Nicht exportierte Feldnamen verwenden: Machen Sie die Felder der Struktur nicht exportiert, indem Sie ihre Namen mit einem beginnen Kleinbuchstabe. Dadurch wird der Zugriff auf Felder außerhalb des Strukturpakets eingeschränkt.
  2. Leserfunktionen bereitstellen:Leserfunktionen innerhalb der Struktur erstellen, um den Zugriff auf die nicht exportierten Felder zu ermöglichen. Diese Funktionen geben normalerweise eine Kopie des Feldwerts zurück.

Beispielcode

package mypackage

type ImmutableStruct struct {
  value int
}

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

func NewImmutableStruct(value int) ImmutableStruct {
  return ImmutableStruct{value: value}
}

Verwendung

myImmutableStruct := mypackage.NewImmutableStruct(3)
fmt.Println(myImmutableStruct.Value()) // Prints 3

In diesem Beispiel verfügt die ImmutableStruct über nicht exportierte Felder und eine Lesefunktion (Value()) für den Zugriff Wertfeld. Nach der Initialisierung kann es nicht mehr von außerhalb des mypackage-Pakets geändert werden.

Diese Technik stellt Unveränderlichkeit sicher und behält gleichzeitig die Flexibilität von Strukturen und die Modularität von Go-Paketen bei.

Das obige ist der detaillierte Inhalt vonWie erstelle ich unveränderliche Strukturen in Go?. 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