Sobes.tech
Senior

Czym jest slice i czym różni się od tablicy?

sobes.tech AI

Odpowiedź od AI

W języku Go tablica (array) to struktura o stałej wielkości, zawierająca elementy tego samego typu. Rozmiar tablicy jest ustalany podczas deklaracji i nie może być zmieniany w trakcie działania programu.

Slice to dynamiczny, zmienny podzbiór tablicy. To struktura zawierająca wskaźnik na tablicę, długość i pojemność. Slices pozwalają na pracę z podzbiorami tablicy i automatyczne rozszerzanie się w razie potrzeby.

Główne różnice:

  • Rozmiar: tablica ma stały rozmiar, slice jest dynamiczny.
  • Przekazywanie: tablice są przekazywane przez wartość (kopiowane), slices przez referencję (wskaźnik na tablicę).
  • Elastyczność: slice można rozszerzać za pomocą funkcji append, tablica nie.

Przykład:

var arr [3]int = [3]int{1, 2, 3} // tablica o stałym rozmiarze

var s []int = arr[0:2] // slice, odwołujący się do części tablicy

s = append(s, 4) // slice się rozszerza, w razie potrzeby tworzony jest nowy tablica