make, neue Operationen
make wird für die Speicherzuweisung integrierter Typen (Map, Slice usw.) verwendet Kanal). new wird für verschiedene Arten der Speicherzuweisung verwendet. (Empfohlenes Lernen: go)
Die eingebaute Funktion new funktioniert im Wesentlichen genauso wie die gleichnamige Funktion in anderen Sprachen: new(T) is weist dem Speicherbereich vom Typ T eine Nullwertauffüllung zu und gibt seine Adresse zurück, die ein Wert vom Typ *T ist.
In Go-Begriffen gibt es einen Zeiger auf einen neu zugewiesenen Nullwert vom Typ T zurück. Eines ist sehr wichtig:
new返回指针。
Die eingebaute Funktion make(T, args) hat andere Funktionen als new(T, make kann nur Slice, Map und Channel erstellen und). Gibt einen Typ T mit einem Anfangswert (nicht Null) zurück, nicht *T. Der Unterschied zwischen diesen drei Typen besteht im Wesentlichen darin, dass Verweise auf Datenstrukturen vor der Verwendung initialisiert werden müssen.
Ein Slice ist beispielsweise ein Deskriptor mit drei Elementen, der einen Zeiger auf die Daten (internes Array), die Länge und die Kapazität enthält. Bis diese Elemente initialisiert werden, ist der Slice gleich Null. Für Slices, Maps und Kanäle initialisiert make die internen Datenstrukturen und füllt sie mit entsprechenden Werten.
make返回初始化后的(非零)值。
Codebeispiel:
var map1 map[string]string = make(map[string]string) fmt.Println(map1) fmt.Println(map1 == nil) var map2 *map[string]string = new(map[string]string) fmt.Println(map2) fmt.Println(map2 == nil) fmt.Println(*map2) fmt.Println(*map2 == nil) // var map1 map[string]string map1["aaa"] = "AAA" map1["bbb"] = "BBB" map1["ccc"] = "CCC" fmt.Println(map1) fmt.Println(len(map1))
Ausgabe:
map[] false &map[] false map[] true map[bbb:BBB ccc:CCC aaa:AAA] Success: process exited with code 0.
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Golang Make und New. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!