Dlaczego warto
Jeśli chcesz tworzyć wydajne, niezawodne i skalowalne aplikacje, to szkolenie wyposaży Cię w praktyczne umiejętności niezbędne do efektywnego wykorzystania języka Go. Dzięki niemu będziesz w stanie sprawnie obsługiwać złożone mechanizmy języka, testować kod i implementować efektywne usługi, przyspieszając rozwój swoich projektów.
Czego się nauczysz
- Tworzyć poprawny kod w języku Golang z wykorzystaniem własnych, rozbudowanych typów, mechanizmów współbieżności, systemu obsługi błędów i zdarzeń czasowych.
- Testować kod z użyciem kompletu narzędzi oferowanych w ramach języka Go, takich jak unit testing, benchmarking i fuzzing.
- Implementować efektywne usługi w modelu REST oraz korzystać z narzędzi do analizy ich działania.
- Praktycznie wykorzystywać relacyjne bazy danych.
Certyfikat i egzamin
Po ukończeniu szkolenia otrzymasz imienny certyfikat potwierdzający zdobyte umiejętności w zakresie wykorzystania języka GoLang. Nie ma egzaminu końcowego – wystarczy aktywne uczestnictwo w zajęciach.
Dla kogo
Ten kurs jest przeznaczony dla programistów na średnim lub wyższym poziomie zaawansowania, z doświadczeniem w innych językach programowania, zaznajomionych z podstawową składnią języka Golang.
Zakres szkolenia
Zagadnienia podstawowe
- Architektura kodu
- Struktury, interfejsy i dynamiczne implementacje,
- „Embedding” i promocja metod
- Współbieżność
- Kontrola cyklu życia i propagacja danych pomiędzy goroutinami – konteksty oraz „wait groups”
- Synchronizacja dostępu do danych: Mutex, RWMutex
- Komunikacja międzyprocesowa: kanały, instrukcja select
- Zdarzenia oparte na czasie: timers, tickers
- Obsługa błędów
- Własne hierarchie błędów,
- Sprawdzanie rodzaju błędu,
- Sytuacje wyjątkowe: panic/recover
- Logowanie strukturalne na przykładzie slog
- Zasoby wbudowane w aplikację: pakiet embed
- Konfiguracja aplikacji z wykorzystaniem pakietu koanf
Testowanie
- Listy i mapy w testowaniu: table/map driven tests
- Równoległe wykonywanie testów,
- Porównywanie rezultatów testu: deep equal oraz pakiet golden files
- Symulowanie danych i fragmentów logiki
- Koncepcja preparowania danych i wstrzykiwania zależności: mocks, stubs, fakes
- Podmiana funkcji (higher-order, monkey patching)
- Wykorzystanie interfejsów
- Testowanie HTTP
- obsługa wywołań
- testowanie implementacji klienta
- Uruchamianie testów i benchmarking
- Testowanie za pomocą danych losowych: fuzz testing
Bazy danych
- Wykorzystanie mapowania obiektowo-relacyjnego na przykładzie pakietu gorm lub ent
- Generacja modeli i zapytań na podstawie SQL: pakiet sqlc
- Zarządzanie strukturą bazy i migracjami: atlas
Usługi RESTful
- Obsługa żądań HTTP
- Routing: standardowy router Golang oraz Gin
- Ekstrakcja parametrów żądania
- Serwowanie plików i zasobów wbudowanych,
- Rozszerzanie procesu przetwarzania żądań: middleware oraz kontekst wywołania
- Bezpieczeństwo
- Serwer z obsługą TLS
- Kontrola dostępu za pomocą JSON Web Token
- Generacja kodu na podstawie specyfikacji: OpenAPI codegen
- Swagger UI: serwowanie bezpośrednie oraz pakiet swag
Narzędzia
- Narzędzie wspomagające budowanie projektu: mage
- Statyczna analiza kodu z wykorzystaniem golangci-lint
- Profilowanie