Go dla początkujących - Część 2: Zmienne i typy danych
Mateusz Kędziora

Witaj w kolejnym artykule z kursu Go dla początkujących! Dzisiaj zajmiemy się jednym z najważniejszych tematów w programowaniu - typami danych. Zrozumienie typów danych jest kluczowe do pisania poprawnego i efektywnego kodu. W tym artykule omówimy wszystkie podstawowe typy danych w Go, pokażemy przykłady ich użycia i wyjaśnimy różnice między nimi.
Wprowadzenie
Go, jak wiele innych języków programowania, oferuje szeroki wybór typów danych, które pozwalają na przechowywanie różnych rodzajów informacji. Każdy typ danych ma swoje specyficzne cechy i zastosowania. Zrozumienie tych cech jest niezbędne do efektywnego programowania w Go.
Podstawowe typy danych
Go oferuje kilka podstawowych typów danych, które możemy podzielić na kategorie:
- Typy liczbowe:
int
- Liczby całkowite (np. -10, 0, 15)float32
ifloat64
- Liczby zmiennoprzecinkowe (np. 3.14, -2.5)complex64
icomplex128
- Liczby zespolone
- Typ tekstowy:
string
- Ciąg znaków (np. “Hello, world!”)
- Typ logiczny:
bool
- Wartość logiczna (prawda lub fałsz)
Typy złożone
Oprócz typów podstawowych, Go oferuje również typy złożone, które pozwalają na przechowywanie kolekcji danych:
array
- Tablica o stałej długościslice
- Dynamiczna tablica (odcinek)map
- Mapa (słownik)struct
- Struktura
Szczegółowy opis typów danych
1. int (liczby całkowite)
Typ int
służy do przechowywania liczb całkowitych. W Go dostępne są różne warianty tego typu, różniące się rozmiarem (ilością bitów): int
, int8
, int16
, int32
i int64
.
var x int = 10
var y int8 = -128
2. float32 i float64 (liczby zmiennoprzecinkowe)
Typy float32
i float64
służą do przechowywania liczb zmiennoprzecinkowych. float32
używa 32 bitów, a float64
używa 64 bitów (dlatego jest bardziej precyzyjny).
var pi float32 = 3.14
var e float64 = 2.71828
3. string (ciąg znaków)
Typ string
służy do przechowywania ciągów znaków. W Go ciągi znaków są niemutowalne, co oznacza, że nie można ich modyfikować po utworzeniu.
var greeting string = "Hello, Go!"
4. bool (wartość logiczna)
Typ bool
reprezentuje wartość logiczną, która może być prawdą (true
) lub fałszem (false
).
var isReady bool = true
var isFinished bool = false
5. array (tablica)
Typ array
reprezentuje tablicę o stałej długości. Wszystkie elementy tablicy muszą być tego samego typu.
var numbers [5]int = [5]int{1, 2, 3, 4, 5}
6. slice (odcinek)
Typ slice
reprezentuje dynamiczną tablicę (odcinek). W przeciwieństwie do tablic, długość slice’a może się zmieniać.
var names []string = []string{"Alice", "Bob", "Charlie"}
Różnica między array i slice
Podstawowa różnica między array
i slice
polega na tym, że array
ma stałą długość, podczas gdy slice
ma dynamiczną długość. Oznacza to, że po utworzeniu tablicy nie można zmienić jej rozmiaru, natomiast slice może być powiększany lub zmniejszany.
7. map (mapa)
Typ map
reprezentuje mapę (słownik), która przechowuje pary klucz-wartość. Klucze i wartości mogą być różnych typów.
var ages map[string]int = map[string]int{
"Alice": 30,
"Bob": 25,
"Charlie": 35,
}
8. struct (struktura)
Typ struct
reprezentuje strukturę, która może zawierać wiele pól różnych typów. Struktury są używane do tworzenia bardziej złożonych typów danych.
type Person struct {
Name string
Age int
Address string
}
var john Person = Person{
Name: "John Doe",
Age: 40,
Address: "123 Main St",
}
Zero values (wartości zerowe)
Każdy typ danych w Go ma swoją wartość zerową, która jest domyślnie przypisywana zmiennym, które nie zostały zainicjalizowane.
int
: 0float32
ifloat64
: 0.0string
: "" (pusty ciąg znaków)bool
: falsearray
: tablica wypełniona wartościami zerowymi dla danego typuslice
: nilmap
: nilstruct
: struktura, w której wszystkie pola mają wartości zerowe dla swoich typów
Tabela podsumowująca typy i ich zastosowania
Typ danych | Zastosowanie | Opis | Przykład | Wartość zerowa |
---|---|---|---|---|
int | Liczby całkowite | Przechowuje liczby całkowite, zarówno dodatnie, jak i ujemne. Dostępne są różne warianty, różniące się rozmiarem (ilością bitów): int , int8 , int16 , int32 i int64 . | var x int = 10 | 0 |
float32 i float64 | Liczby zmiennoprzecinkowe | Przechowują liczby zmiennoprzecinkowe (liczby z częścią ułamkową). float32 używa 32 bitów, a float64 używa 64 bitów (dlatego jest bardziej precyzyjny). | var pi float32 = 3.14 | 0.0 |
string | Ciąg znaków | Przechowuje ciągi znaków (tekst). W Go ciągi znaków są niemutowalne, co oznacza, że nie można ich modyfikować po utworzeniu. | var greeting string = "Hello, Go!" | "" (pusty ciąg znaków) |
bool | Wartość logiczna | Reprezentuje wartość logiczną, która może być prawdą (true ) lub fałszem (false ). | var isReady bool = true | false |
array | Tablica | Reprezentuje tablicę o stałej długości. Wszystkie elementy tablicy muszą być tego samego typu. | var numbers [5]int = [5]int{1, 2, 3, 4, 5} | Tablica wypełniona wartościami zerowymi dla danego typu |
slice | Odcinek | Reprezentuje dynamiczną tablicę (odcinek). W przeciwieństwie do tablic, długość slice’a może się zmieniać. | var names []string = []string{"Alice", "Bob", "Charlie"} | nil |
map | Mapa (słownik) | Przechowuje pary klucz-wartość. Klucze i wartości mogą być różnych typów. | var ages map[string]int = map[string]int{"Alice": 30, "Bob": 25, "Charlie": 35} | nil |
struct | Struktura | Reprezentuje strukturę, która może zawierać wiele pól różnych typów. Struktury są używane do tworzenia bardziej złożonych typów danych. | type Person struct { Name string; Age int; Address string } | Struktura, w której wszystkie pola mają wartości zerowe dla swoich typów |
Uwagi:
- Tabela zawiera podstawowe informacje o typach danych. Każdy typ ma swoje specyficzne cechy i może być używany w różny sposób.
- Wartość zerowa to wartość, która jest domyślnie przypisywana zmiennym, które nie zostały zainicjalizowane.
- Zachęcam do eksperymentowania z różnymi typami danych i ich zastosowaniami. Im więcej będziesz ćwiczyć, tym lepiej zrozumiesz, jak działają typy danych w Go.
Praca domowa
- Utwórz zmienne różnych typów (int, float, string, bool) i przypisz im wartości.
- Wypróbuj różne operacje na tych zmiennych (np. dodawanie, odejmowanie, łączenie ciągów znaków).
- Utwórz tablicę (array) i slice z elementami różnych typów.
- Utwórz mapę (map) z kluczami i wartościami różnych typów.
- Utwórz strukturę (struct) z kilkoma polami różnych typów.
Podsumowanie
W tym artykule omówiliśmy wszystkie podstawowe typy danych w Go: int, float, string, bool, array, slice, map i struct. Wyjaśniliśmy, jak ich używać, jakie są różnice między nimi i jakie są ich wartości zerowe. Mam nadzieję, że ten artykuł był dla Ciebie pomocny i że teraz lepiej rozumiesz typy danych w Go.
Co dalej?
Jeśli chcesz dowiedzieć się więcej o Go, zapraszam do lektury kolejnych artykułów z kursu Go dla początkujących. W następnych artykułach omówimy m.in. instrukcje warunkowe, pętle, funkcje i wiele innych ciekawych tematów.
Do zobaczenia wkrótce!
Polecane artykuły
Docker vs Kubernetes: Który dla Ciebie w 2025?
Docker i Kubernetes objaśnione! Która technologia lepsza dla początkujących w 2025? Porównanie, przykłady i przyszłość.
Mateusz Kędziora
DevOps: Automatyzacja zadań sysadmina dla programistów
Zautomatyzuj pracę sysadmina w środowisku DevOps! Praktyczne przykłady, skrypty, Ansible, Terraform, Prometheus i Grafana.
Mateusz Kędziora
Automatyzacja Linux/macOS z Bash: Praktyczny Przewodnik
Zacznij automatyzować system Linux/macOS z Bash! Dowiedz się, czym jest Bash, jak pisać skrypty i używać podstawowych komend.
Mateusz Kędziora