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?

Dec 17, 2024 pm 06:37 PM

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
}
Nach dem Login kopieren

Eine komprimierte Version dieser Funktion wäre:

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

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}
}
Nach dem Login kopieren

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!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich? GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich? Mar 03, 2025 pm 05:17 PM

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 kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren? Mar 03, 2025 pm 05:22 PM

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

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go? Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go? Mar 10, 2025 pm 05:38 PM

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 kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen? Mar 10, 2025 pm 05:36 PM

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 konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache? Mar 03, 2025 pm 05:18 PM

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 kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren? Mar 10, 2025 pm 03:20 PM

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

Wie schreibe ich Dateien in Go Language bequem? Wie schreibe ich Dateien in Go Language bequem? Mar 03, 2025 pm 05:15 PM

Wie schreibe ich Dateien in Go Language bequem?

Wie schreibe ich Benchmarks, die die reale Leistung in Go genau widerspiegeln? Wie schreibe ich Benchmarks, die die reale Leistung in Go genau widerspiegeln? Mar 10, 2025 pm 05:36 PM

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

See all articles