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

1/28/2025 Kurs Go

Mateusz Kędziora

image

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 i float64 - Liczby zmiennoprzecinkowe (np. 3.14, -2.5)
    • complex64 i complex128 - 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ści
  • slice - 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: 0
  • float32 i float64: 0.0
  • string: "" (pusty ciąg znaków)
  • bool: false
  • array: tablica wypełniona wartościami zerowymi dla danego typu
  • slice: nil
  • map: nil
  • struct: struktura, w której wszystkie pola mają wartości zerowe dla swoich typów

Tabela podsumowująca typy i ich zastosowania

Typ danychZastosowanieOpisPrzykładWartość zerowa
intLiczby całkowitePrzechowuje 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 = 100
float32 i float64Liczby zmiennoprzecinkowePrzechowują 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.140.0
stringCiąg znakówPrzechowuje 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)
boolWartość logicznaReprezentuje wartość logiczną, która może być prawdą (true) lub fałszem (false).var isReady bool = truefalse
arrayTablicaReprezentuje 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
sliceOdcinekReprezentuje dynamiczną tablicę (odcinek). W przeciwieństwie do tablic, długość slice’a może się zmieniać.var names []string = []string{"Alice", "Bob", "Charlie"}nil
mapMapa (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
structStrukturaReprezentuje 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

  1. Utwórz zmienne różnych typów (int, float, string, bool) i przypisz im wartości.
  2. Wypróbuj różne operacje na tych zmiennych (np. dodawanie, odejmowanie, łączenie ciągów znaków).
  3. Utwórz tablicę (array) i slice z elementami różnych typów.
  4. Utwórz mapę (map) z kluczami i wartościami różnych typów.
  5. 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