Heim > Backend-Entwicklung > Golang > Wie initialisiere ich Strukturen in Go Without Constructors?

Wie initialisiere ich Strukturen in Go Without Constructors?

Susan Sarandon
Freigeben: 2024-12-18 02:47:14
Original
245 Leute haben es durchsucht

How Do I Initialize Structs in Go Without Constructors?

Konstruktoren in Go

Beim Umgang mit benutzerdefinierten Typen, die in Go als Strukturen definiert sind, kann es wünschenswert sein, sie mit sinnvollen Standardwerten zu initialisieren Schaffung. Im Gegensatz zu herkömmlichen objektorientierten Programmiersprachen verfügt Go jedoch nicht über dedizierte Konstruktoren für Strukturen.

Alternative zu Konstruktoren: Neue Funktionen

Um dieser Situation zu begegnen, entwickelt Go verwenden häufig „neue“ Funktionen. Diese Funktionen akzeptieren die notwendigen Parameter für die Initialisierung und geben einen Zeiger auf eine neue Strukturinstanz zurück:

type Thing struct {
    Name  string
    Num   int
}

func NewThing(someParameter string) *Thing {
    p := new(Thing)
    p.Name = someParameter
    p.Num = 33
    return p
}
Nach dem Login kopieren

Dieser Ansatz ermöglicht die Initialisierung von Strukturwerten mit bestimmten Standardwerten, wie z. B. der Zuweisung eines Werts zum Feld „Num“. .

Komprimierte neue Funktionssyntax

Für einfache Strukturen eine komprimierte Syntax kann verwendet werden:

func NewThing(someParameter string) *Thing {
    return &Thing{someParameter, 33}
}
Nach dem Login kopieren

Nicht-Zeiger-Rückgabetypen

Wenn die Rückgabe eines Zeigers nicht gewünscht ist, kann eine „make“-Funktion anstelle von „ verwendet werden. Neu":

func makeThing(name string) Thing {
    return Thing{name, 33}
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie initialisiere ich Strukturen in Go Without Constructors?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage