Slice to tablica
Lekcja 11 z 21 w kursie Slice’y i mapy w Go w Coddy.
Jeśli nie rozumiesz, jaki związek ma wycinek z tablicą, wyjaśnijmy to. W Go wycinek jest tak naprawdę referencją do tablicy, a tę tablicę nazywamy „tablicą bazową”. Żeby to zrozumieć, rozważmy przykład:
Załóżmy, że mamy taki wycinek:
str := []string{"Coddy", "Learn", "Play", "test"}Jak myślisz, czy ten wycinek str przechowuje bezpośrednio te cztery elementy? Odpowiedź brzmi: nie, ponieważ sam wycinek nie przechowuje bezpośrednio żadnych elementów.
Gdy tworzymy taki wycinek, za kulisami Go tworzy tablicę w pamięci, a następnie zwraca wartość wycinka wskazującą na tę tablicę. Ta tablica nazywana jest tablicą bazową wycinka. Zatem elementy są w rzeczywistości przechowywane w tablicy bazowej, a nie w wycinku.
Ta tablica bazowa może być współdzielona przez inne wycinki. Na przykład:
str := []string{"Coddy", "Learn", "Play", "test"}
slice1 := str[0:3]
slice2 := str[1:4]W tym przykładzie slice1 i slice2 współdzielą tę samą tablicę bazową. Zauważmy, że operacja na wycinku nie tworzy nowej tablicy bazowej; zamiast tego tworzy wycinek odnoszący się do pewnej części tej samej tablicy bazowej.
Zatem w tym przykładzie wszystkie wycinki współdzielą tę samą tablicę bazową i możemy przedstawić to w ten sposób:
Za każdym razem, gdy zmieniamy oryginalny wycinek, inne wycinki również odzwierciedlają te zmiany, ponieważ odnoszą się do tej samej tablicy bazowej. Na przykład, jeśli zmienimy „Learn” na „Fun”, będzie to wyglądać tak:
Pamiętaj więc, że literał wycinka (name := []string{}) zawsze tworzy pod spodem tablicę bazową.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
Wszystkie lekcje w sekcji Slice’y i mapy w Go
1Wprowadzenie
Wprowadzenie3Slice od kuchni
Slice to tablicaSlice z makeKopiowanie slice’aUsuń elementWyzwanie podsumowujące #1Wyzwanie podsumowujące #2Poćwicz samodzielnie: Kompilator Go online