Der Unterschied zwischen Arrays und Slices in Golang:
● Slices sind Zeigertypen, Arrays sind Werttypen
● Arrays Die Länge von ist fest, Slices jedoch nicht (Slices sind dynamische Arrays)
● Slices haben ein Attribut mehr als Arrays: Kapazität (Obergrenze)
● Die unterste Schicht von Slices sind Arrays
Verwandte Empfehlungen: Golang-Tutorial
Da einer ein Zeigertyp und der andere ein Werttyp ist, was ist der Unterschied?
Schauen Sie sich dieses Beispiel an
numbers := []int{1, 2, 3, 4, 5, 6} for i, e := range numbers { if i == len(numbers)-1 { numbers[0] += e } else { numbers[i+1] += e } } fmt.Println(numbers)
Das Ergebnis ist:
[22 3 6 10 15 21]
Ersetzen Sie das Slice durch ein Array:
numbers := [...]int{1, 2, 3, 4, 5, 6} for i, e := range numbers { if i == len(numbers)-1 { numbers[0] += e } else { numbers[i+1] += e } } fmt.Println(numbers)
Das Ergebnis ist:
[7 3 5 7 9 11]
Es ist offensichtlich: Nach dem Durchlaufen wird jedes Element im Array zur Summe des aktuellen Elements und des vorherigen Elements. Das Gleiche gilt für das Slicing, mit der Ausnahme, dass jedes Element zum geänderten Wert des vorherigen Elements und zur Summe der Elemente wird aktuelles Element und.
Analyse: Während der for-Schleife sind die Elemente in Zahlen {1,2,3,4,5,6}. Die Variablen, die die for-Schleife empfangen, sind i und e, und i ist beide [0,1,2,3,4,5]. Aber e ist anders, das Array wird als Wert übergeben. Beim Durchlaufen des Arrays ist e also {1,2,3,4,5,6}. Beim Slicing wird ein Zeiger übergeben, sodass bei jeder Akkumulation der geänderte Wert vorliegt angesammelt.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Golang-Array und Slice?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!