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

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

Susan Sarandon
Susan SarandonOriginal
2024-12-24 05:29:18201Durchsuche

How Can I Initialize Go Structs Without Traditional Constructors?

Können Konstruktoren zum Initialisieren von Go-Strukturen verwendet werden?

In Go können Strukturen über verschiedene Methoden mit sinnvollen Standardwerten initialisiert werden. Trotz des Fehlens traditioneller Konstruktoren aufgrund der Nicht-OOP-Natur von Go gibt es alternative Techniken, um eine ähnliche Funktionalität zu erreichen.

Methode 1: NewThing-Funktion mit Zeigerrückgabe

Wann Nullwerte ungeeignet sind, besteht eine Möglichkeit darin, eine „NewThing“-Funktion zu erstellen, die einen Zeiger auf eine neu initialisierte Funktion zurückgibt Struktur:

type Thing struct {
    Name  string
    Num   int
}

func NewThing(someParameter string) *Thing {
    p := new(Thing)
    p.Name = someParameter
    p.Num = 33 // Set a sensible default value
    return p
}

Methode 2: Komprimierte „NewThing“-Funktion

Für einfachere Strukturen steht eine prägnantere Methode zur Verfügung:

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

Methode 3: „makeThing“-Funktion mit Wert Rückgabe

Wenn die Rückgabe eines Zeigers nicht erwünscht ist, kann die Funktion „makeThing“ genannt werden und einen Wert zurückgeben:

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

Referenz

Weitere Einzelheiten finden Sie im Abschnitt „Zuordnung mit Neu“ in Effective Go.

Das obige ist der detaillierte Inhalt vonWie kann ich Go-Strukturen 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