Szkolenie: Programowanie w języku Go
Szkolenie „Programowanie w języku Go” to praktyczne wprowadzenie do nowoczesnego języka programowania Go (Golang), opracowanego przez Google, który słynie z wydajności, prostoty i doskonałego wsparcia dla programowania współbieżnego. Go znajduje zastosowanie w aplikacjach serwerowych, mikrousługach, systemach sieciowych oraz narzędziach CLI. Kurs koncentruje się na idiomatycznym pisaniu kodu w Go, z wykorzystaniem biblioteki standardowej, narzędzi developerskich i mechanizmów concurrency.
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:3 dni (24h)
Kod kursu:GO/PROG
Programowanie w języku Go
Cele szkolenia
Gruntowne wprowadzenie do składni i przedstawienie najważniejszych idiomów języka Go
Zapoznanie z istniejącym ekosystemem i dostępnymi narzędziami deweloperskimi
Programowanie współbieżne w GO
Poznanie najważniejszych modułów biblioteki standardowej
Dla kogo?
Programistów chcących kompleksowo poznać język Go, poszerzyć posiadane umiejętności, a także poprawić wydajność i bezpieczeństwo wytwarzanego oprogramowania
Zalety
Intensywna forma warsztatowa – każda funkcja i mechanizm demonstrowane są w praktyce
Uczestnicy piszą kod, korzystają z typowych narzędzi Go i wdrażają znane wzorce projektowe
Szkolenie prowadzone przez praktyków – Go używany jest w realnych projektach produkcyjnych
Gotowy kod, wzorce i przykłady ułatwiające rozpoczęcie pracy nad własnymi usługami, narzędziami i API
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
# Konspekt szkolenia: Programowanie w języku Go
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

