Dieser Artikel wurde von der Go-SpracheTutorial-Kolumne verfasst, um Ihnen die Vorsichtsmaßnahmen für die Verwendung von Slice in Go mitzuteilen. Ich hoffe, dass er Freunden in Not hilfreich sein wird!
Dieser Artikel beschreibt die Verwendung von Slice in Go. Schauen wir uns das folgende Programm an Slice, schneiden Sie das 6. Element des Arrays aus und drucken Sie schließlich die Länge und Kapazität des Slice aus, um festzustellen, ob die Adressen des ersten Elements des Slice und des 6. Elements des Arrays gleich sind.
Jeder denkt darüber nach, ob das erste Element des Slice dem 6. Element des Arrays entspricht. Vielleicht können Sie dieses Programm ausführen, um es zu beweisen, und sich die Ergebnisse unten ansehen Im obigen Programm wird das Array erstellt und der Speicherplatz mit dem Array geteilt. Die Startposition des Slice ist 1 und die Kapazität beträgt 5. Die Adressen von Slice [0 ] und array[5] sind gleich. -
- Als nächstes schauen wir uns dieses Programm an und versuchen, es selbst auszuführen. Praktische Übung ist der beste Lehrer.
package mainimport (
"fmt"
)func main() {
var array [10]int
var slice = array[5:6]
fmt.Println("lenth of slice: ", len(slice))
fmt.Println("capacity of slice: ", cap(slice))
fmt.Println(&slice[0] == &array[5])}
Nach dem Login kopieren
Was ich im obigen Absatz ausdrücken möchte, ist, dass die Funktion AddElement () ein Slice akzeptiert und ein Element und fügt Elemente an das Slice an und gibt das Slice zurück. Definieren Sie ein Slice in der Funktion main(), hängen Sie drei Elemente an das Slice an und rufen Sie dann AddElement() auf, um mit dem Anhängen des vierten Elements an das Slice fortzufahren und ein neues Slice newSlice zu definieren. Abschließend wird beurteilt, ob das neue Slice und das alte Slice einen gemeinsamen Speicherplatz haben
Ich glaube, dass viele Freunde denken, dass das Anhängen die Erweiterung des alten Slice auslösen könnte, aber sie sind sich nicht sicher, also lesen Sie weiter ist möglich“ Geändert in „Ja“: - 1. Wenn die Append-Funktion ausgeführt wird, wird ermittelt, ob die Slice-Kapazität die neuen Elemente speichern kann. Wenn nicht, wird erneut Speicherplatz beantragt. Der neue Speicherplatz wird angezeigt 2-mal oder 1,25-mal so groß wie das Original (abhängig von der Größe des ursprünglichen Speicherplatzes). In diesem Beispiel werden tatsächlich zwei Anhängevorgänge ausgeführt. Beim ersten Mal wird der Speicherplatz auf 4 erhöht, sodass der zweite Anhängevorgang nicht erweitert wird Slices teilen sich einen Speicherplatz. Das Programm gibt „true“ aus.
-
Dann sehen Sie weiter, wie dieses Programm ausgeht. Sie können darüber nachdenken oder das Programm ausführen:
package mainimport (
"fmt")func AddElement(slice []int, e int) []int {
return append(slice, e)
}func main() {
var slice []int
slice = append(slice, 1, 2, 3)
newSlice := AddElement(slice, 4)
fmt.Println(&slice[0] == &newSlice[0])}
Nach dem Login kopieren
Nachdem Sie das obige Programm mit Fragen ausgeführt haben, ist es besser, weiterzulesen. Wenn Sie es nicht glauben, können Sie Folgendes versuchen:
Definieren Sie im Programm eine Slice-Reihenfolge mit einer Länge von 10. Pollorder und Lockorder sind Slices, die durch Ausführen von order[start, stop, max]-Operationen für die Reihenfolge generiert werden Slice bzw. Abschließend gibt das Programm die Kapazität und die Länge der Sperrreihenfolge aus.
order[start,stop,max] bedeutet Schneidereihenfolge, der neue Schneidebereich ist [Start, Stopp) und die neue Schneidekapazität beträgt max. Die Bestelllänge beträgt das Zweifache der Bestelllänge. Der Pollorder-Slice bezieht sich auf die erste Hälfte der Bestellung und die Lockorder bezieht sich auf die zweite Hälfte der Bestellung, dh die ursprüngliche Bestellung ist in zwei Segmente unterteilt. Daher betragen die Länge und die Kapazität von pollorder und lockerorder beide orderLen, also 5. -
- Dieser Artikel enthält einige Erklärungen zur Verwendung von Slice. Ich hoffe, er kann Partnern in Not helfen. Für weitere Informationen zur Verwendung von Slice hinterlassen Sie bitte eine Nachricht
Das obige ist der detaillierte Inhalt vonTeilen Sie Notizen zur Verwendung von Slice in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!