Tablice: kolekcje o stałej długości
Literały tablic, indeksowanie i długość
Tablice: kolekcje o stałej długości to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Czym jest tablica
Tablica w języku Go to sekwencja elementów tego samego typu o stałej długości. Długość jest częścią typu: [3]int i [4]int to różne typy.
- Tablice są typami wartościowymi — przypisanie kopiuje całą tablicę
- Długość jest zawsze znana w czasie kompilacji
- Rzadko używa się ich bezpośrednio; w większości zadań preferowane są wycinki
Literały tablic
Tablice można deklarować i inicjalizować za pomocą literału:
package main
func main() {
primes := [5]int{2, 3, 5, 7, 11}
names := [3]string{"Alice", "Bob", "Carol"}
flags := [4]bool{true, false, true, false}
_ = primes; _ = names; _ = flags
}Długość i indeksowanie tablicy
Do uzyskania długości należy użyć len(), a do odczytywania i zapisywania elementów — indeksowania zaczynającego się od zera:
package main
import "fmt"
func main() {
scores := [3]int{90, 85, 92}
fmt.Println(len(scores)) // 3
fmt.Println(scores[0]) // 90
scores[1] = 100
fmt.Println(scores) // [90 100 92]
}Wielokropek w literałach tablic
Należy użyć [...], aby kompilator sam policzył elementy:
package main
import "fmt"
func main() {
days := [...]string{"Mon","Tue","Wed","Thu","Fri"}
fmt.Println(len(days)) // 5
}Tablice są typami wartościowymi
Podczas przypisywania tablicy lub przekazywania jej do funkcji Go kopiuje całą tablicę. Modyfikacja kopii nie wpływa na oryginał:
package main
import "fmt"
func main() {
a := [3]int{1, 2, 3}
b := a // full copy
b[0] = 99
fmt.Println(a) // [1 2 3] — unchanged
fmt.Println(b) // [99 2 3]
}Porównywanie tablic
Tablice tego samego typu i o tej samej długości można porównywać za pomocą == i !=:
package main
import "fmt"
func main() {
x := [3]int{1, 2, 3}
y := [3]int{1, 2, 3}
z := [3]int{1, 2, 4}
fmt.Println(x == y) // true
fmt.Println(x == z) // false
}Tablice dwuwymiarowe
Tablice można zagnieżdżać, aby tworzyć siatki lub macierze:
package main
import "fmt"
func main() {
grid := [2][3]int{
{1, 2, 3},
{4, 5, 6},
}
fmt.Println(grid[1][2]) // 6
}Iterowanie po tablicy
Do iterowania można użyć klasycznej pętli for lub range:
package main
import "fmt"
func main() {
nums := [4]int{10, 20, 30, 40}
for i, v := range nums {
fmt.Printf("[%d] = %d\n", i, v)
}
}Tablice a wycinki
Najważniejsze różnice:
- Tablica: stały rozmiar, typ wartościowy, rozmiar jest częścią typu
- Wycinek: dynamiczny rozmiar, typ referencyjny, oparty na tablicy
- W praktyce należy używać wycinków, chyba że potrzebny jest stały rozmiar znany w czasie kompilacji (np. skrót SHA-256
[32]byte)
Częste pułapki
Należy uważać na:
- Indeks poza zakresem — Go wywołuje panikę w czasie działania, jeśli
i >= len(arr) - Przekazywanie dużych tablic do funkcji powoduje kosztowne kopiowanie — należy zamiast tego użyć wskaźników lub wycinków
- Zapominanie, że
[3]inti[4]intto typy niezgodne
Szybkie sprawdzenie
Jaka jest długość wyrażenia [...]string{"a","b","c"}?
Podsumowanie: tablice
Najważniejsze informacje:
- Tablice mają stałą długość znaną w czasie kompilacji, która jest częścią typu
- Są typami wartościowymi — przypisanie kopiuje wszystkie elementy
- Należy używać
len()i indeksowania zaczynającego się od zera - W większości zastosowań kolekcji należy preferować wycinki
Zadanie praktyczne
Należy zadeklarować tablicę 5 liczb całkowitych, przypisać wartość 100 do trzeciego elementu, a następnie wypisać tablicę za pomocą range.
Często zadawane pytania
Czy lekcja „Tablice: kolekcje o stałej długości” jest bezpłatna?
Tak — pełny tekst „Tablice: kolekcje o stałej długości” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Tablice: kolekcje o stałej długości”?
Literały tablic, indeksowanie i długość Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Tablice: kolekcje o stałej długości”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tablice: kolekcje o stałej długości
- Slice: listy dynamiczne
- Mapy: magazyny klucz-wartość
- Iterowanie po kolekcjach za pomocą range