Die make()
Funktion ist keine reguläre Funktion, sondern eine eingebaute Funktion, die Teil der Sprachspezifikation ist. Was Sie im builtin
Paket (builtin.make()
) sehen, dient nur zu Dokumentationszwecken. Das ist nicht die eigentliche Signatur der Funktion. Der dritte optionale Parameter ist die Kapazität, die nur zur Verfügung gestellt werden kann, wenn Sie ein Segment erstellen.
Es ist in der Spezifikation beschrieben: Making slices, maps and channels:
make(T, n) slice slice of type T with length n and capacity n
make(T, n, m) slice slice of type T with length n and capacity m
Und bei Slice types:
erwähnte auch
Ein neuer, initialisiert Scheibe Wert für ein Element vom Typ gegeben T
wird unter Verwendung der integrierten Funktion gemacht make
, die einen Slice-Typ und Parameter mit der Länge und optional die Kapazität übernimmt. Ein Slice, der mit make erstellt wird, weist immer ein neues, verstecktes Array zu, auf das sich der zurückgegebene Slice-Wert bezieht. Das heißt, die Ausführung
make([]T, length, capacity)
derselben Schicht erzeugt als Array Aufteilung und Aufschneiden es, so dass diese beiden Ausdrücke sind äquivalent:
make([]int, 50, 100)
new([100]int)[0:50]