SlideShare a Scribd company logo
GoLang
Go - це компільована, багатопоточна мова програмування.
Створена компанією google у 2007 році
Агенда
1. Основні можлиовсті golang. Golang та ООП
2. Як працює golang зсередини
3. Де і чому варто використовувати golang
4. Архітектура комерційного ПО на golang
5. Як почати писати хороший код на golang
6. CI/CD програм на golang
7. Приклади
Основні можливості
- написання серверного API та консольних утиліт
- створення багатопоточних програм
- створення мультиплатформенних програм (програми з UI для Andoid/IOs/MacOS/Windows)
- єдиний стандарт коду
- підтримка тестів з коробки
- і багато іншого (debuging/profiling/test/benchmarks)
Як працює golang
Як працює golang garbage collector
- concurrent
- tri-color
- mark-sweep
GOGC param for control GC
Де і чому використовувати golang
- На проектах з великим навантаженням (golang працює на рівні з C)
- На проектах з обмеженими ресурсами (golang економний до ресурсів, Ви контролюєте це)
- На проектах з великою командою (golang має низький поріг входження, стати гофером
простіше ніж Java, Python або C розробником хорошого рівня)
- На проектах з суворими вимогами до стандарту (golang має єдиний стандарт коду)
- На проектах з малими командами (golang простий для використання, має великий вибір
вбудованих бібліотек)
benchmark GO vs Java
benchmark GO vs PHP
Архітектура комерційного ПО
- Використання стандартних бібліотек, або сумісних з стандартними (gin vs net/http)
- Не зловживання gorutines
- Розділення на логічні бібліотеки, без зворотного звертання
- Використання vendor (glide)
- Покриття тестами
- Форматування коду
- Коментарі для експортованих методів
- Писати потоко безпечний код
- Викоритання toml для конфігурації
Concurrency patterns
- Generator - функція генератор повертає channel
- channels для керування сервісами
- Multiplexing
Singleton
Singleton
Singleton. Check-Lock-Check Pattern
Singleton. Check-Lock-Check Pattern
Singleton. Check-Lock-Check Pattern
Timer
Як почати писати хороший код на golang
- glide - зручний вендорінг
- gofmt - для форматування коду до єдиного стандарту
- gometalinter - для пошуку не відповідностей до загальних правил
- cobra - для створення команд
- якщо щось можна міняти зовні, слідувати потоко безпечним методологіям
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
Golang

More Related Content

Similar to Golang

Федорук Максим. Кейс Фокстрот: відновлення позицій після апдейту. Основні вис...
Федорук Максим. Кейс Фокстрот: відновлення позицій після апдейту. Основні вис...Федорук Максим. Кейс Фокстрот: відновлення позицій після апдейту. Основні вис...
Федорук Максим. Кейс Фокстрот: відновлення позицій після апдейту. Основні вис...
Collaborator.pro
 
Automation as a Way to Do Routine Work Quickly and Effortlessly
Automation as a Way to Do Routine Work Quickly and EffortlesslyAutomation as a Way to Do Routine Work Quickly and Effortlessly
Automation as a Way to Do Routine Work Quickly and Effortlessly
GlobalLogic Ukraine
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
Oleg Nazarevych
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...
Fwdays
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?» Online Q...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?»  Online Q...ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?»  Online Q...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?» Online Q...
QADay
 
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...
Collaborator.pro
 
Андрій Корнілов Asterisk
Андрій Корнілов AsteriskАндрій Корнілов Asterisk
Андрій Корнілов Asterisk
Lviv Startup Club
 
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...
Dakiry
 
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...
QADay
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
Fwdays
 
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
QADay
 
таблиця
таблицятаблиця
таблицяchepesyuk
 
Html5
Html5Html5
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнів
Stfalcon Meetups
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнів
Artem Henvald
 
Kardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocessKardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocess
Lviv Startup Club
 
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...
Collaborator.pro
 
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
QADay
 
Розробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиРозробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапи
Олексій Артеменко
 
Android: Інструменти програміста
Android: Інструменти програмістаAndroid: Інструменти програміста
Android: Інструменти програміста
Anatoliy Odukha
 

Similar to Golang (20)

Федорук Максим. Кейс Фокстрот: відновлення позицій після апдейту. Основні вис...
Федорук Максим. Кейс Фокстрот: відновлення позицій після апдейту. Основні вис...Федорук Максим. Кейс Фокстрот: відновлення позицій після апдейту. Основні вис...
Федорук Максим. Кейс Фокстрот: відновлення позицій після апдейту. Основні вис...
 
Automation as a Way to Do Routine Work Quickly and Effortlessly
Automation as a Way to Do Routine Work Quickly and EffortlesslyAutomation as a Way to Do Routine Work Quickly and Effortlessly
Automation as a Way to Do Routine Work Quickly and Effortlessly
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?» Online Q...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?»  Online Q...ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?»  Online Q...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?» Online Q...
 
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...
 
Андрій Корнілов Asterisk
Андрій Корнілов AsteriskАндрій Корнілов Asterisk
Андрій Корнілов Asterisk
 
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...
 
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
 
таблиця
таблицятаблиця
таблиця
 
Html5
Html5Html5
Html5
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнів
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнів
 
Kardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocessKardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocess
 
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...
 
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
 
Розробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиРозробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапи
 
Android: Інструменти програміста
Android: Інструменти програмістаAndroid: Інструменти програміста
Android: Інструменти програміста
 

Recently uploaded

Сучасний підхід до підвищення продуктивності сільськогосподарских рослин
Сучасний підхід до підвищення продуктивності сільськогосподарских рослинСучасний підхід до підвищення продуктивності сільськогосподарских рослин
Сучасний підхід до підвищення продуктивності сільськогосподарских рослин
tetiana1958
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
tetiana1958
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
ssuser7541ef1
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
Olga Kudriavtseva
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
Olga Kudriavtseva
 
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
santomihail264
 
Симон Петлюра – видатний борець за незалежність
Симон Петлюра – видатний борець за незалежністьСимон Петлюра – видатний борець за незалежність
Симон Петлюра – видатний борець за незалежність
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
estet13
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
Репетитор Історія України
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
Olga Kudriavtseva
 

Recently uploaded (11)

Сучасний підхід до підвищення продуктивності сільськогосподарских рослин
Сучасний підхід до підвищення продуктивності сільськогосподарских рослинСучасний підхід до підвищення продуктивності сільськогосподарских рослин
Сучасний підхід до підвищення продуктивності сільськогосподарских рослин
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
 
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
 
Симон Петлюра – видатний борець за незалежність
Симон Петлюра – видатний борець за незалежністьСимон Петлюра – видатний борець за незалежність
Симон Петлюра – видатний борець за незалежність
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
 

Golang

  • 1.
  • 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 для конфігурації
  • 10. Concurrency patterns - Generator - функція генератор повертає channel - channels для керування сервісами - Multiplexing
  • 16. Timer
  • 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