Szkolenie: Programowanie w języku Go
Szkolenie Programowanie w języku Go to praktyczny kurs, który uczy tworzenia wydajnych, skalowalnych aplikacji w Go, obejmując idiomatyczną składnię, concurrency, narzędzia developerskie, wzorce projektowe oraz wykorzystanie biblioteki standardowej
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:3 dni (24h)
Kod kursu:GO/PROG
Programowanie w języku Go
Cele szkolenia
Szkolenie przygotowuje do samodzielnego projektowania i implementowania aplikacji w języku Go z wykorzystaniem idiomatycznej składni oraz narzędzi developerskich
Szkolenie uczy stosowania mechanizmów współbieżności oraz wzorców projektowych charakterystycznych dla ekosystemu Go
Szkolenie omawia wykorzystanie najważniejszych modułów biblioteki standardowej w praktycznych zastosowaniach programistycznych
Szkolenie rozwija umiejętność analizy, debugowania i optymalizacji kodu Go w kontekście wydajności i bezpieczeństwa
Dla kogo?
Programistów z podstawowym doświadczeniem w dowolnym języku, chcących poznać Go i rozwijać nowoczesne aplikacje
Osób realizujących zadania związane z tworzeniem serwisów backendowych, mikrousług lub narzędzi CLI
Specjalistów IT zainteresowanych zwiększeniem wydajności i bezpieczeństwa wytwarzanego oprogramowania
Efekty kształcenia
Uczestnik projektuje aplikacje w języku Go zgodnie z najlepszymi praktykami
Uczestnik analizuje i implementuje mechanizmy współbieżności z użyciem goroutines i kanałów
Uczestnik obsługuje narzędzia developerskie oraz środowisko pracy Go
Uczestnik wykorzystuje wzorce projektowe i idiomy charakterystyczne dla Go
Uczestnik testuje i debugguje kod z użyciem narzędzi ekosystemu Go
Uczestnik wdraża aplikacje z wykorzystaniem biblioteki standardowej Go
Wymagania
Podstawowa umiejętność programowania w dowolnym języku
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Podstawy języka
Charakterystyka Go: prostota jako cecha projektowa, kompilacja do natywnego kodu, wbudowana współbieżność, silne typowanie
Konfiguracja środowiska deweloperskiego (kompilator, IDE, debugger)
Model kompilacji i workflow z wykorzystaniem narzędzia go
Weryfikacja jakości kodu: go vet (analiza statyczna), gofmt/goimports (formatowanie), staticcheck (linting)
Podstawy składni i konwencje kodowania
Typy podstawowe i złożone
Zmienne, stałe, kontrolowana mutowalność, shadowing
Operatory
Instrukcje sterujące, pętle i wyrażenie switch
Funkcje, closures i defer
Definicja i użycie struktur oraz typów wyliczeniowych z iota
Model pamięci i wskaźniki
Idea wartości i referencji w Go
Przekazywanie przez wartość a przekazywanie przez wskaźnik
Wskaźniki w Go: *T, &, dereferencja, brak arytmetyki wskaźników
Typy referencyjne: map, slice, channel
Wartość nil: zero value, nil dereference panic
Rozwiązywanie typowych problemów zgłaszanych przez kompilator
Metody, interfejsy i kompozycja
Definiowanie typów: alias vs nowy typ
Metody: value receiver vs pointer receiver
Kompozycja przez embedding, promowanie pól i metod
Definicja i implementacja interfejsów
Pusty interfejs: interface{} i any
Type assertion i type switch
Kluczowe interfejsy standardowe: io.Reader, io.Writer, fmt.Stringer, error
Polimorfizm w Go: kompozycja zamiast dziedziczenia
Obsługa błędów
Filozofia Go: błędy jako wartości, kontrast z wyjątkami
Interfejs error: errors.New, fmt.Errorf
Idiom if err != nil
Sentinel errors: własne wartości błędów, kiedy stosować
Własne typy błędów: implementacja interfejsu error, dodatkowy kontekst
Error wrapping: %w, errors.Is, errors.As
Defer w obsłudze błędów: wzorzec named return values
Panic i recover: kiedy używać, konwersja na error
Biblioteki zewnętrzne: github.com/pkg/errors, wzorce stosowane w praktyce
Codzienne programowanie w Go
Kolekcje standardowe: slice, map, użycie w praktyce
Programowanie w stylu funkcyjnym: funkcje wyższego rzędu, closures, przekazywanie funkcji
Wprowadzenie do typów generycznych: definiowanie funkcji i struktur parametryzowanych typem, type constraints
Iteratory i range: lazy evaluation w Go 1.23+, komponowanie operacji
Organizacja projektu: system modułów, pakiet internal, go.work
Mechanizmy widoczności i enkapsulacja danych
Testowanie: testy jednostkowe, table-driven tests, testy integracyjne, mockowanie zależności
Współbieżność
Model współbieżności Go: goroutines, scheduler M:N, GOMAXPROCS
Channels: deklaracja, operacje send/receive, buffered vs unbuffered
Zamykanie channels, range po channel, idiom done channel
Directional channels: chan<-, <-chan
Select: multipleksowanie, timeout pattern, default case
Synchronizacja: sync.WaitGroup, sync.Mutex, sync.RWMutex, sync.Once, sync.Map
Operacje atomowe: sync/atomic
Context: zarządzanie cyklem życia, propagacja anulowania, WithTimeout/WithCancel/WithValue
Wzorce współbieżności: worker pool, pipeline, fan-out/fan-in, semaphore pattern
Graceful shutdown: obsługa sygnałów OS, context z timeoutem, cleanup zasobów
errgroup: golang.org/x/sync/errgroup, współbieżne operacje z obsługą błędów
Race detector: wykrywanie race conditions, typowe problemy
Budowanie aplikacji
Obsługa argumentów wejściowych i walidacja danych
Zarządzanie zmiennymi środowiskowymi i konfiguracją
Praca z systemem plików i operacje I/O
Budowanie serwisu HTTP: routing, middleware, obsługa błędów, graceful shutdown
Praca z bazą danych: database/sql, wzorzec repozytorium
Tworzenie i publikowanie bibliotek oraz narzędzi CLI
Wybrane opinie
Przeczytaj pozytywne opinie pochodzące z ankiet satysfakcji z naszych szkoleń wypełnianych wyłącznie przez ich uczestników po realizacji usługi


