Heim > Backend-Entwicklung > Golang > Untersuchen Sie, ob Golang new() verwendet

Untersuchen Sie, ob Golang new() verwendet

PHPz
Freigeben: 2023-04-23 10:46:52
Original
513 Leute haben es durchsucht

Der Speicherverwaltungsmechanismus von Golang unterscheidet sich von anderen Programmiersprachen. Er verwendet einen automatischen Speicherbereinigungsmechanismus (Automatic Garbage Collection). Dieser Mechanismus verhindert, dass Programmierer Themen wie Speicherzuweisung, Kopieren und Freigabe zu viel Aufmerksamkeit schenken, sodass sich Programmierer mehr auf das Schreiben von qualitativ hochwertigem Code konzentrieren können.

Während der formalen Entwicklung müssen wir jedoch noch gute Arbeit bei der Speicherverwaltung leisten, um die Leistung des Programms besser steuern und optimieren zu können. Golang bietet viele Speicherverwaltungsfunktionen wie new() und make(). Heute werden wir diskutieren, ob die Verwendung von new() in Golang definitiv eine kluge Wahl ist.

Werfen wir zunächst einen Blick auf die Funktion new(). In Golang wird die Funktion new() zum Zuweisen von Speicher verwendet und gibt einen Zeiger auf einen neu zugewiesenen Wert vom Typ Null zurück. Im folgenden Beispiel verwenden wir die Funktion new(), um einen Zeiger p zu erstellen, der auf den Typ int zeigt, und weisen ihn Null zu:

var p *int
p = new(int)
Nach dem Login kopieren

Hier erstellt die Funktion new() einen Zeiger auf einen Wert vom Typ int, initialisieren Sie es auf 0 und geben Sie diesen Zeiger p zurück. Die Verwendung der Funktion new() zur Speicherzuweisung ist eine der am häufigsten verwendeten Methoden in Golang.

Die Funktion new() löscht jedoch nur den zugewiesenen Speicher (Nullwert) und initialisiert ihn nicht. Wenn wir den neu zugewiesenen Speicher auf einen Nullwert initialisieren möchten, müssen wir zusätzlichen Code schreiben. Im Gegensatz dazu initialisiert die Funktion make() den Speicher beim Zuweisen. Wenn wir einige Datenstrukturen mit internen Typen wie Slices, Hash-Tabellen oder Kanälen erstellen müssen, können wir die Funktion make() verwenden.

Darüber hinaus stellt uns Golang Ausdrucksanweisungen zur Verfügung, um die Verwendung der Funktion new() zu vereinfachen, bei der es sich um den Referenzoperator & handelt. Über den Referenzoperator & können wir Variablen direkt initialisieren und zuweisen, ohne explizit eine neue Variable vom Zeigertyp erstellen zu müssen.

Im folgenden Beispiel verwenden wir den Referenzoperator &, um eine neue Wörterbuchtypvariable dict zu erstellen:

dict := &map[int]string{}
Nach dem Login kopieren

Hier verwenden wir den &-Operator, um einen Zeiger auf das neue zu erstellen dictionary und weisen Sie es der Variablen dict zu. Natürlich können wir auch die Funktion new() verwenden, um dieselbe Variable zu erstellen:

dict := new(map[int]string)
Nach dem Login kopieren

Dann werden wir feststellen, dass bei Verwendung der Funktion new() zum Zuweisen von Speicher, da Zuweisung und Initialisierung getrennt sind, Dadurch wird der Code komplexer und fehleranfälliger.

Im Allgemeinen ist die Verwendung der new()-Funktion zum Zuweisen von Speicher in Golang in manchen Fällen möglicherweise nicht die optimale Wahl. Wenn wir relativ gesehen die Funktion make() oder den Referenzoperator & verwenden, um eine neue Datenstrukturvariable zu erstellen, wird der Code prägnanter und die Wahrscheinlichkeit von Schreibfehlern lässt sich leichter verringern. Bei der Implementierung des Programms sollten wir die geeignete Methode zum Zuweisen und Initialisieren von Speicher entsprechend der tatsächlichen Situation wählen.

Das obige ist der detaillierte Inhalt vonUntersuchen Sie, ob Golang new() verwendet. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage