Heim > Backend-Entwicklung > Golang > Der Unterschied zwischen Golang Make und New

Der Unterschied zwischen Golang Make und New

(*-*)浩
Freigeben: 2019-12-03 11:19:53
Original
3097 Leute haben es durchsucht

Der Unterschied zwischen Golang Make und New

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返回指针。
Nach dem Login kopieren

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返回初始化后的(非零)值。
Nach dem Login kopieren

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

Ausgabe:

map[]
false
&map[]
false
map[]
true
map[bbb:BBB ccc:CCC aaa:AAA]
Success: process exited with code 0.
Nach dem Login kopieren

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!

Verwandte Etiketten:
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