Sobes.tech
Senior

Was ist der Unterschied zwischen einem Array und einem Slice in Go?

sobes.tech KI

Antwort von AI

In Go ist ein Array eine Struktur mit fester Größe, deren Größe bei der Deklaration festgelegt wird und die sich nicht ändern kann. Arrays speichern Elemente hintereinander im Speicher und werden beim Übergabe an eine Funktion vollständig kopiert.

Ein Slice ist ein dynamischer, in der Größe veränderbarer Typ, der eine Referenz auf einen aufeinanderfolgenden Abschnitt eines Arrays darstellt. Ein Slice enthält einen Zeiger auf das erste Element, die Länge und die Kapazität.

Wichtige Unterschiede:

  • Die Größe des Arrays ist fest, das Slice ist dynamisch.
  • Beim Übergabe wird ein Array kopiert, beim Slice wird eine Referenz auf das underlying array übergeben.
  • Ein Slice kann erweitert werden (append), ein Array nicht.

Beispiel:

var arr [3]int = [3]int{1, 2, 3} // Array mit fester Größe

slice := arr[0:2] // Slice, das auf die ersten beiden Elemente des Arrays verweist

slice = append(slice, 4) // Das Slice wird erweitert, möglicherweise wird ein neues underlying array erstellt

Daher sind Slices praktisch für die Arbeit mit dynamischen Sammlungen, während Arrays für feste Datensätze geeignet sind.