Szkolenie: Programowanie w języku Go
Szkolenie Programowanie w języku Go to praktyczny kurs, który uczy tworzenia wydajnych i skalowalnych aplikacji w Go, najlepsze praktyki, narzędzia developerskie 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
Filozofia projektowa Go: świadoma prostota, kompilacja do kodu natywnego, współbieżność wbudowana w język, silne typowanie statyczne
Konfiguracja środowiska pracy programisty (kompilator, IDE, debugger)
Model kompilacji i przepływ pracy oparty na narzędziu go
Kontrola jakości kodu: analiza statyczna (go vet), automatyczne formatowanie (gofmt, goimports) oraz linting (staticcheck)
Składnia języka i przyjęte w społeczności konwencje kodowania
Typy podstawowe oraz typy złożone
Zmienne, stałe, kontrolowana mutowalność i zjawisko shadowingu
Operatory
Instrukcje sterujące, pętle oraz wielokryterialne wyrażenie switch
Funkcje, closures i mechanizm defer
Definiowanie i użycie struktur oraz typów wyliczeniowych z wykorzystaniem iota
Model pamięci i wskaźniki
Semantyka wartości i semantyka referencji w Go
Przekazywanie argumentów przez wartość a przez wskaźnik — implikacje wydajnościowe i projektowe
Wskaźniki w Go: notacja *T, operator &, dereferencja
Typy o semantyce referencyjnej: map, slice, channel
Wartość nil: koncepcja zero value oraz pułapka nil dereference panic
Metody, interfejsy i kompozycja
Definiowanie typów własnych: alias typu a nowy typ nominalny
Metody z receiverem wartościowym i wskaźnikowym — kryteria wyboru
Kompozycja przez embedding, promowanie pól i metod
Definiowanie i niejawna implementacja interfejsów
Pusty interfejs: interface{} oraz alias any
Type assertion i type switch w praktyce
Kluczowe interfejsy biblioteki standardowej: io.Reader, io.Writer, fmt.Stringer, error
Polimorfizm w Go — kompozycja jako alternatywa dla dziedziczenia
Obsługa błędów
Filozofia Go wobec błędów: błąd jako wartość w opozycji do modelu wyjątków
Interfejs error oraz funkcje errors.New i fmt.Errorf
Idiomatyczne sprawdzanie błędów — wzorzec if err != nil
Sentinel errors — kiedy definiować własne wartości błędów, a kiedy ich unikać
Własne typy błędów: implementacja interfejsu error i wzbogacanie kontekstu diagnostycznego
Opakowywanie błędów: czasownik %w, funkcje errors.Is oraz errors.As
Rola defer w obsłudze błędów i wzorzec named return values
Panic i recover — dopuszczalne zastosowania oraz konwersja do wartości error
Biblioteki zewnętrzne (np. github.com/pkg/errors) i utrwalone wzorce stosowane w praktyce
Codzienne programowanie w Go
Kolekcje standardowe — slice i map w zastosowaniach praktycznych
Programowanie w stylu funkcyjnym: funkcje wyższego rzędu, closures, funkcje jako wartości przekazywane do innych funkcji
Wprowadzenie do typów generycznych: parametryzacja funkcji i struktur oraz definiowanie type constraints
Iteratory funkcyjne (iter.Seq, iter.Seq2) i range-over-func w Go 1.23+ — definiowanie, konsumpcja i komponowanie operacji
Organizacja projektu: system modułów, katalog internal, mechanizm 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 oraz rola zmiennej GOMAXPROCS
Kanały (channels) — deklaracja, operacje send i receive, warianty buffered i unbuffered
Zamykanie kanałów, iteracja z użyciem range oraz idiom done channel
Kanały kierunkowe: chan<-, <-chan
Instrukcja select: multipleksowanie, wzorzec timeout, gałąź default
Prymitywy synchronizacji: sync.WaitGroup, sync.Mutex, sync.RWMutex, sync.Once, sync.Map
Operacje atomowe z pakietu sync/atomic
Pakiet context: zarządzanie cyklem życia operacji, propagacja anulowania, warianty WithTimeout, WithCancel oraz WithValue
Wzorce współbieżności: worker pool, pipeline, fan-out/fan-in, semaphore pattern
Graceful shutdown — obsługa sygnałów systemowych, context z limitem czasu, zwalnianie zasobów
Pakiet errgroup (golang.org/x/sync/errgroup) — współbieżne operacje z propagacją błędów
Race detector — wykrywanie race conditions i typowe pułapki dostępu współdzielonego
Budowanie aplikacji
Obsługa argumentów wejściowych i walidacja danych użytkownika
Zarządzanie zmiennymi środowiskowymi i konfiguracją aplikacji
Praca z systemem plików i operacje I/O
Budowa serwisu HTTP: routing, middleware, spójna obsługa błędów, graceful shutdown
Integracja z bazą danych: pakiet database/sql oraz 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

