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.