Heim > Backend-Entwicklung > Golang > Warum haben die Go-Slices „c' und „d' nach dem Slicen unterschiedliche Werte und Kapazitäten?

Warum haben die Go-Slices „c' und „d' nach dem Slicen unterschiedliche Werte und Kapazitäten?

Mary-Kate Olsen
Freigeben: 2024-12-21 02:35:10
Original
319 Leute haben es durchsucht

Why Do Go Slices `c` and `d` Have Different Values and Capacities After Slicing?

Slice-Kapazität und -Länge in Go verstehen

Wenn man Go anhand seines Tutorials lernt, stößt man möglicherweise auf Fragen wie:

Frage:

Warum werden im Code unten die Slices c und d mit initialisiert? unterschiedliche Werte und Kapazitäten?

func main() {
  a := make([]int, 5)
  b := make([]int, 0, 5)
  c := b[:2]
  d := c[2:5]
}
Nach dem Login kopieren

Antwort:

In Go werden Slices durch Arrays unterstützt. Wenn mit make ein Slice erstellt wird, wird das Hintergrundarray mit seinem Nullwert initialisiert. In diesem Fall handelt es sich um ein Array von Ganzzahlen, die jeweils auf 0 initialisiert sind.

Wenn c als Teil von b erstellt wird, verwendet es dasselbe Hintergrundarray wie b. Da b mit einem Array der Länge Null erstellt wurde, sind die ersten beiden Elemente des Hintergrundarrays 0. Daher hat c eine Länge von 2 und seine Elemente sind beide 0.

d wird als Slice von erstellt c beginnt bei Index 2. Es verwendet außerdem dasselbe Hintergrundarray wie c. Seine Kapazität ist jedoch unterschiedlich, da es sich um einen vollständigen Slice-Ausdruck handelt. Ein vollständiger Slice-Ausdruck hat eine Kapazität, die der Differenz zwischen seinem ersten und letzten Index entspricht, in diesem Fall 5 - 2 = 3.

Zusätzliche Ressourcen:

  • [Go Slices: Verwendung und Interna](https://blog.golang.org/slices)
  • [Arrays, Slices (und Strings): Die Mechanik des „Anhängens“](https://blog.golang.org/slices- im Anhang)

Das obige ist der detaillierte Inhalt vonWarum haben die Go-Slices „c' und „d' nach dem Slicen unterschiedliche Werte und Kapazitäten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage