Middle+
Z czego składa się slice, jaka jest jego wewnętrzna struktura?
sobes.tech AI
Odpowiedź od AI
W Go, slice to struktura zawierająca trzy główne pola:
- Wskaźnik na tablicę — adres pierwszego elementu slice'a w wewnętrznej tablicy.
- Długość (len) — liczba dostępnych elementów w slice'u.
- Pojemność (cap) — maksymalna liczba elementów, które można pomieścić, zaczynając od wskaźnika, bez przydzielania nowej pamięci.
Wewnątrz, slice nie jest tablicą, lecz tylko "oknem" na część tablicy. Przy zmianie slice'a (np. dodawaniu elementów przez append), jeśli długość przekracza pojemność, tworzona jest nowa tablica, a dane są kopiowane do niej.
Przykład struktury slice (uproszczony):
type SliceHeader struct {
Data uintptr // wskaźnik na pierwszy element tablicy
Len int // długość slice'a
Cap int // pojemność slice'a
}
To umożliwia efektywną pracę z dynamicznymi sekwencjami bez kopiowania danych przy cięciu.