Kod: DEV-040
Czas trwania: 32 godzin
Czas trwania: 32 godzin
Opis szkolenia
Szkolenie skierowane jest przede wszystkim do programistów, którzy mają doświadczenie w programowaniu w innych językach. Obejmuje możliwości i funkcje Go. Implementacja wbudowanych kontenerów i specyficzne cechy konstrukcji kontrolnych są szczegółowo omówione w praktycznych przykładach. Język programowania Go ma własną implementację podejścia obiektowego, dlatego szczególną uwagę przywiązuje się do dekompozycji domen opartych na interfejsie.Go został opracowany z myślą o efektywnym wykorzystaniu obliczeń współbieżnych i równoległych - dlatego kurs zawiera liczne przykłady użycia algorytmów współbieżnych. Po prezentacji każdego nowego tematu następują praktyczne zadania. Zagadnienia związane ze korzystaniem ze standardowych funkcji biblioteki są sprawdzane, a także z wykorzystaniem pakietów innych firm.
Go zapewnia szeroki zestaw narzędzi wspierających procesy opracowywania i testowania, które są również omówione w tym kursie. Zajmuje się także niektórymi praktycznymi zadaniami, w tym interakcją z relacyjnymi bazami danych, i stanowi przykład implementacji interfejsu REST.
Plan szkolenia
Environment setup- Jak zainstalować i skonfigurować kompilator Go. Przykład pisania, kompilacji i uruchamiania prostego programu Go.
Go IDEs.
- Jakie zintegrowane środowisko programistyczne można wykorzystać do pisania kodu w Go, jak je zainstalować i skonfigurować.
Go tools
- Podstawowe wbudowane narzędzia wspierające proces rozwoju. Jak skompilować i uruchomić program Go, jak uzyskać dostęp do dokumentacji i dodać dokumentację do kodu
Directory structure / Go modules / Packages
- Jak zorganizować strukturę katalogu projektu, aby była zgodna z ogólnie przyjętymi regułami. Metody dekompozycji kodu na osobne komponenty dla łatwej konserwacji i ponownego użycia
Installing dependencies
- Używanie rozwiązań innych firm zamiast pisania własnego kodu. Zarządzanie zależnościami i rozproszone przechowywanie pakietów.
Data types and variables declaration / Zero values / Type conversions
- Reprezentacja pierwotnych wartości w języku i wykonywanie podstawowych operacji w ich obrębie.
Containers: arrays, slices, maps
- Jak przechowywać sekwencje wartości: tablice, wycinki i tabele skrótów (ich wewnętrzna reprezentacja i przypadki użycia).
Branching and loops: break, continue, fallthrough, goto
- Opis algorytmów z pętlami i rozgałęzieniami, różnice w konstrukcjach składni Go od innych języków programowania.
Functions / Multiple return values / Variadic parameters / Function literals and closures
- Definiowanie funkcji i przekazywanie parametrów. Funkcje z dowolną liczbą argumentów. Możliwości funkcjonalne, anonimowe funkcje i zamknięcia.
Types declarations / Constants / Iota / Structures / Embedded structs / Anonymous structs / Nested structs
- Sposoby definiowania typów i stałych użytkowników, opisywania sekwencji wartości. Jak opisywać jednostki domeny za pomocą struktur języka.
Pointers / Value and references types
- Zarządzanie pamięcią i wskaźnikami.
Defer statement
- Odroczenie wywołania funkcji.
Error handling / Panic recover
- Jak identyfikować i obsługiwać błędy czasu wykonywania. Sposoby pisania niezawodnego i odpornego kodu.
Methods and interfaces / Method expressions
- Interfejsy i jego implementacja. Budowanie kodu obiektowego opartego na interfejsach. Metody
Concurrency vs parallelism / Goroutines / Memory model
- Jak robić wiele rzeczy jednocześnie. Jednoczesne wykonywanie oparte na goroutinach. Model pamięci w Go.
Channels / Blocking and unblocking channels / Select statement
- Pisanie niezawodnego kodu: wymiana danych między goroutynami w oparciu o kanały.
Waitgroups, mutexes, atomics
- Synchronizowanie oddzielnych części programu.
Reading and writing files
- Jak zapisywać dane między uruchomieniami oddzielnych programów.
Standard library: fmt, log, strings, time, sort, http, math, regexp
- Wbudowane mechanizmy języka do rozwiązywania rutynowych zadań.
Testing and benchmarking
- Jak zagwarantować stabilność kodu, przeprowadzając testy jednostkowe i jak znaleźć najbardziej skuteczne rozwiązanie dla zadania.
JSON encoding and decoding
- Wymiana danych z programami napisanymi w innych językach.
Databases / PostgreSQL / MongoDB
- Przechowywanie danych w relacyjnych bazach danych.
REST application example
- Przykład pełnoprawnej aplikacji zaplecza.
Unsafe package
- Rozszerzenia językowe do wykonywania niebezpiecznych funkcji.
Cele
- Naucz się korzystać z typów danych i konstrukcji składniowych Go
- Zapoznaj się z modelem obiektowym języka i jak go używać do projektowania komponentów programu
- Poznaj niektóre główne trudności w tworzeniu współbieżnego kodu programu i sposoby ich przezwyciężenia
- Dowiedz się, jak korzystać z wbudowanych narzędzi Go i opracowywać kod zgodnie z oczekiwaniami społeczności programistów
- Naucz się rozwiązywać rzeczywiste zadania na poziomie aplikacji produkcyjnej
Grupa docelowa
- Programiści, którzy mają doświadczenie w programowaniu w innych językach
- Architekci, projektanci systemów, testerzy