Die Unterschiede zwischen new() und dem „&“-Operator
In Go die new()-Funktion und die „&“-Speicheradresse Operatoren werden beide zum Zuweisen von Speicher verwendet. Es gibt jedoch einige subtile Unterschiede zwischen ihrer Verwendung.
Funktionsvergleich
Sowohl new() als auch &-Operator geben einen Zeiger auf eine neu zugewiesene Speicheradresse zurück. Sie unterscheiden sich jedoch in ihrer Syntax:
Typanalyse
Wie durch das bereitgestellte Codebeispiel, Reflektion, demonstriert Die Analyse zeigt, dass sowohl &Vector{} als auch new(Vector) Zeiger desselben Typs zurückgeben, da beide Zeiger auf Instanzen der Vector-Struktur sind.
Historische Verwirrung
In der Go-Mailingliste wurden bereits Bedenken hinsichtlich der Verwendung von new() und & für die Speicherzuweisung angesprochen, da dies zu Verwirrung führen kann.
Sonderfall
Es ist erwähnenswert dass new() die einzige Methode ist, um einen Zeiger auf einen unbenannten Basistyp, beispielsweise eine Ganzzahl, zu erhalten. Dies ist im folgenden Beispiel zu sehen:
p := new(int) // valid p := &int{0} // invalid
Präferenz und Verwendung
Letztendlich ist die Wahl zwischen der Verwendung von new() und & für die Speicherzuweisung größtenteils eine Frage der persönlichen Präferenz. Beide Methoden haben die gleiche Funktionalität und liefern die gleichen Ergebnisse. Es ist jedoch wichtig, sich der subtilen Unterschiede zwischen den beiden Operatoren bewusst zu sein und sie entsprechend den spezifischen Anforderungen angemessen einzusetzen.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen der Funktion „new()' und dem Speicheradressenoperator „&' in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!