


Wie kann ich Strukturen in Go ohne herkömmliche Konstruktoren initialisieren?
Dec 17, 2024 pm 06:37 PMKonstruktoren 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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie schreibe ich Dateien in Go Language bequem?

Wie schreibe ich Benchmarks, die die reale Leistung in Go genau widerspiegeln?
