Heim >Backend-Entwicklung >Golang >Wie kann ich Strukturen in Go ohne herkömmliche Konstruktoren initialisieren?

Wie kann ich Strukturen in Go ohne herkömmliche Konstruktoren initialisieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-17 18:37:14519Durchsuche

How Can I Initialize Structs in Go Without Traditional Constructors?

Konstruktoren in Go: Alternativen zur Gewährleistung sinnvoller Standardwerte

Traditionell werden Konstruktoren zum Initialisieren von Objekten in objektorientierten Programmiersprachen verwendet. Allerdings gibt es in Go, das einen anderen Ansatz für objektorientiertes Design verfolgt, keine Konstruktoren im herkömmlichen Sinne.

Um der Notwendigkeit gerecht zu werden, sinnvolle Standardwerte für Strukturen festzulegen, bietet Go mehrere Alternativen. Eine Option ist die init-Methode, die auf Paketebene ausgeführt wird. Dieser Ansatz ist jedoch nicht für die Initialisierung einzelner Strukturen geeignet.

Eine gängigere Praxis besteht darin, eine NewThing-Funktion zu erstellen, die notwendige Parameter übernimmt und einen Zeiger auf eine initialisierte Struktur zurückgibt. Mit dieser Funktion können Sie bestimmte Werte festlegen und anderen Feldern Standardwerte zuweisen. Zum Beispiel:

type Thing struct {
    Name  string
    Num   int
}

func NewThing(name string) *Thing {
    p := new(Thing)
    p.Name = name
    p.Num = 33 // Default value
    return p
}

Eine komprimierte Version dieser Funktion wäre:

func NewThing(name string) *Thing {
    return &Thing{name, 33}
}

Wenn die Rückgabe eines Zeigers unerwünscht ist, besteht eine andere Option darin, eine makeThing-Funktion zu erstellen, die direkt einen Wert zurückgibt :

func makeThing(name string) Thing {
    return Thing{name, 33}
}

Dieser Ansatz eignet sich für Strukturen, die relativ einfach sind und keine Zeiger erfordern. Es ist erwähnenswert, dass das neue Schlüsselwort Speicher in Go zuweist. Daher ist es wichtig, bei der Arbeit mit Zeigern Speicherverwaltungspraktiken zu berücksichtigen.

Das obige ist der detaillierte Inhalt vonWie kann ich Strukturen in Go ohne herkömmliche Konstruktoren initialisieren?. 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