2. GoLang
Go - це компільована, багатопоточна мова програмування.
Створена компанією google у 2007 році
3. Агенда
1. Основні можлиовсті golang. Golang та ООП
2. Як працює golang зсередини
3. Де і чому варто використовувати golang
4. Архітектура комерційного ПО на golang
5. Як почати писати хороший код на golang
6. CI/CD програм на golang
7. Приклади
4. Основні можливості
- написання серверного API та консольних утиліт
- створення багатопоточних програм
- створення мультиплатформенних програм (програми з UI для Andoid/IOs/MacOS/Windows)
- єдиний стандарт коду
- підтримка тестів з коробки
- і багато іншого (debuging/profiling/test/benchmarks)
6. Як працює golang garbage collector
- concurrent
- tri-color
- mark-sweep
GOGC param for control GC
7. Де і чому використовувати golang
- На проектах з великим навантаженням (golang працює на рівні з C)
- На проектах з обмеженими ресурсами (golang економний до ресурсів, Ви контролюєте це)
- На проектах з великою командою (golang має низький поріг входження, стати гофером
простіше ніж Java, Python або C розробником хорошого рівня)
- На проектах з суворими вимогами до стандарту (golang має єдиний стандарт коду)
- На проектах з малими командами (golang простий для використання, має великий вибір
вбудованих бібліотек)
benchmark GO vs Java
benchmark GO vs PHP
8.
9. Архітектура комерційного ПО
- Використання стандартних бібліотек, або сумісних з стандартними (gin vs net/http)
- Не зловживання gorutines
- Розділення на логічні бібліотеки, без зворотного звертання
- Використання vendor (glide)
- Покриття тестами
- Форматування коду
- Коментарі для експортованих методів
- Писати потоко безпечний код
- Викоритання toml для конфігурації
17. Як почати писати хороший код на golang
- glide - зручний вендорінг
- gofmt - для форматування коду до єдиного стандарту
- gometalinter - для пошуку не відповідностей до загальних правил
- cobra - для створення команд
- якщо щось можна міняти зовні, слідувати потоко безпечним методологіям
18. CI/CD програм на golang
go build -o bin/test main.go
docker build -t test_app ./
docker run -it --rm -d --name test_app test_app