Der PHP-Editor Zimo führt Sie in diesem Artikel in das Wissen über die gemeinsame Nutzung von Arrays zwischen Slices in Golang ein. In Golang ist ein Slice ein dynamisches Array, das bei Bedarf automatisch erweitert werden kann. Die gemeinsame Nutzung von Arrays zwischen Slices ist eine sehr wichtige Funktion in Golang. Sie ermöglicht es mehreren Slices, dasselbe zugrunde liegende Array zu teilen, ohne Daten zu kopieren. Dies spart nicht nur Speicherplatz, sondern verbessert auch die Leistung. Als nächstes werden wir das Prinzip und die Verwendung der Array-Freigabe zwischen Slices im Detail erläutern.
Hier wird die Anhängefunktion von Slices erklärt.
Wie oben erwähnt, gibt append das aktualisierte Slice zurück.
Bedeutet dies, dass das neu erstellte Slice das zugrunde liegende Array nicht mit dem vorhandenen Slice teilt?
Bei anderen Slicing-Vorgängen, wie z. B. mySlice[x:y], teilt das neue Slice das zugrunde liegende Array mit mySlice, wie unten gezeigt.
PS: Testcode:
var names = make([]string, 4, 10) names1 := append(names, "Tom")
In diesem Fall ist also im Namen genügend verfügbare Kapazität enthalten. Daher kann durch Anhängen kein neues zugrunde liegendes Array erstellt werden.
Ausgabe:
[ ] [ Tom]
Sollte die Ausgabe nicht mit dem gemeinsam genutzten zugrunde liegenden Array identisch sein?
Mir fehlt hier definitiv etwas ganz Grundlegendes.
Sie haben Recht, names1
使用与 names
dasselbe zugrunde liegende Array.
Nein, die Ausgabe sollte nicht dieselbe sein, da names
的长度为 4,而 names1
die Länge 5 hat. Beachten Sie, dass beide Kapazitäten (10) haben.
Hier ist ein Beispiel, das dies etwas verdeutlichen könnte:
func main() { emptyNames := make([]string, 0, 10) notEmptyNames := append(emptyNames, "Jerry") extendedNames := emptyNames[:1] // OK, because 1 < cap(emptyNames) fmt.Println("emptyNames:", emptyNames) //emptyNames: [] fmt.Println("notEmptyNames:", notEmptyNames) //notEmptyNames: [Jerry] fmt.Println("extendedNames:", extendedNames) //extendedNames: [Jerry] }
Das obige ist der detaillierte Inhalt vongolang: Array-Sharing zwischen Slices. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!