Junior — Middle
W jakich sytuacjach w języku programowania następuje automatyczne zwiększenie rozmiaru dynamicznej tablicy (slice)?
sobes.tech AI
Odpowiedź od AI
W Go, zakres (slice) to struktura zawierająca wskaźnik na tablicę, długość i pojemność. Rozmiar zakresu automatycznie się zwiększa, gdy dodajesz elementy za pomocą funkcji append, a bieżąca długość zakresu osiąga jego pojemność.
W tym momencie alokowana jest nowa tablica z powiększoną pojemnością (zwykle dwukrotnie większą od poprzedniej), stare elementy są kopiowane do nowej tablicy, a wskaźnik zakresu jest aktualizowany na nową tablicę. Pozwala to zakresowi na dynamiczny wzrost w miarę dodawania elementów.
Przykład:
s := make([]int, 0, 2) // długość 0, pojemność 2
s = append(s, 1) // długość 1, pojemność 2
s = append(s, 2) // długość 2, pojemność 2
s = append(s, 3) // długość 3, pojemność zwiększona, na przykład do 4
W ten sposób rozmiar jest automatycznie zwiększany podczas dodawania elementów, gdy długość osiąga pojemność zakresu.