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
Wprowadzenie do języka Go
Historia i filozofia języka
Kluczowe cechy - prostota, wydajność, współbieżność
Obszary zastosowań
Składnia i struktura programu
Go Playground
Środowisko programistyczne
Instalacja Go SDK
Struktura katalogów - GOPATH vs Go Modules
Narzędzie go i podstawowe komendy
Konfiguracja IDE
Rozszerzenia i wtyczki
Debugowanie programów
Podstawowe typy danych
Koncepcja zero value
Typy numeryczne - całkowite, zmiennoprzecinkowe, zespolone
Typ bool
Stringi, runy i bajty
Literały i konwersje typów
Deklaracje zmiennych - var, :=, wielokrotne
Stałe i enumeracje - const, iota
Zasięg widoczności
Typy złożone
Tablice - deklaracja, inicjalizacja, rozmiar jako część typu
Slices - append, copy, len, cap, slicing
Ciągi bajtów - string vs []byte vs []rune, UTF-8
Mapy - operacje CRUD, sprawdzanie kluczy, iteracja
Struktury - pola, tagi, zagnieżdżanie, porównywanie
Struktury kontrolne
Bloki i zasięg zmiennych
Przesłanianie zmiennych - shadowing
Instrukcja if-else z inicjalizacją
Pętla for - klasyczna, while, nieskończona, for-range
Instrukcja switch - z wyrażeniem, bez wyrażenia, type switch
Break, continue, labels
Goto
Funkcje
Definicja i wywołanie funkcji
Parametry i wartości zwracane
Nazwane wartości zwracane
Funkcje wariadyczne
Zwracanie wielu wartości - idiom (result, error)
Funkcje jako wartości - anonimowe, parametry, zwracane
Domknięcia - przechwytywanie zmiennych, wzorce
Defer - odraczanie wykonania, kolejność LIFO, zastosowania
Wskaźniki
Model pamięci - stack vs heap
Przekazywanie przez wartość
Wskaźniki w Go - *T, &, *, brak arytmetyki
Kiedy używać wskaźników
Modyfikowalne parametry
Typy referencyjne - map, slice, channel
Wartość nil - zero value, nil dereference panic
Metody i interfejsy
Definiowanie typów - alias vs nowy typ
Metody - odbiornik wartości vs wskaźnika
Promowanie metod
Kompozycja - embedding, promowanie pól i metod
Definicja i implementacja interfejsów
Interfejs pusty - interface{}
Type assertion i type switch
Standardowe interfejsy - io.Reader, io.Writer, fmt.Stringer
Polimorfizm w Go
Obsługa błędów
Filozofia Go - błędy jako wartości
Interfejs error - errors.New, fmt.Errorf
Idiom if err != nil
Własne typy błędów
Wrapping errors - %w, errors.Is, errors.As
Defer w obsłudze błędów
Panic i recover - kiedy używać, wzorce
Pakiety i moduły
System modułów - go.mod, go.sum, semantic versioning
Inicjalizacja i zarządzanie - go mod init, go get, go mod tidy
Struktura pakietu
Widoczność - wielka vs mała litera
Pakiet main i funkcja main
Funkcja init
Import pakietów - standardowe, lokalne, zewnętrzne, aliasy
Organizacja projektu - standard layout, internal, vendor
Workspace - go.work, praca z wieloma modułami
Współbieżność
Goroutines - słowo kluczowe go, scheduler, GOMAXPROCS
Channels - deklaracja, wysyłanie, odbieranie, buforowane vs niebuforowane
Zamykanie kanałów i range
Kierunkowe kanały
Select - multipleksowanie, timeout, default case
Synchronizacja - WaitGroup, Mutex, RWMutex, Once, atomic
Wzorce współbieżności - worker pool, pipeline, fan-out/fan-in
Context - zarządzanie cyklem życia
Race detector - wykrywanie wyścigów, typowe problemy
Biblioteka standardowa
io - Reader, Writer, Copy, praca z plikami, bufio
encoding/json - Marshal, Unmarshal, tagi, streaming
net/http - client, server, routing, middleware
flag - parsowanie argumentów CLI
log - podstawowe logowanie, własne loggery
Inne pakiety - time, regexp, context, testing
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

