SlideShare a Scribd company logo
1 of 19
Download to read offline
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

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 EffortlesslyGlobalLogic 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...GoQA
 
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...
Ольга Резнікова. Безкоштовна автоматизація процесів лінкбілдінгу на базі Pyth...Collaborator.pro
 
Андрій Корнілов Asterisk
Андрій Корнілов AsteriskАндрій Корнілов Asterisk
Андрій Корнілов AsteriskLviv Startup Club
 
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...
Євгеній Пасєка, Володимир Ревак “Як протестувати медичний проект і не зашкоди...Dakiry
 
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...
ІГОР ДОДУХ «Інфраструктура для автотестів. Практичний досвід» Online QADay 2...GoQA
 
"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 SpodaretsFwdays
 
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...GoQA
 
таблиця
таблицятаблиця
таблицяchepesyuk
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівStfalcon Meetups
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівArtem Henvald
 
Kardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocessKardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocessLviv Startup Club
 
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...
Катерина Золотарьова. Як налаштувати мультимовний сайт, щоб швидше стати в ТО...Collaborator.pro
 
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...GoQA
 
Розробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиРозробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиОлексій Артеменко
 
Android: Інструменти програміста
Android: Інструменти програмістаAndroid: Інструменти програміста
Android: Інструменти програмістаAnatoliy Odukha
 
Студентський R&D проєкт – практичні навички для студентів без відриву від нав...
Студентський R&D проєкт – практичні навички для студентів без відриву від нав...Студентський R&D проєкт – практичні навички для студентів без відриву від нав...
Студентський R&D проєкт – практичні навички для студентів без відриву від нав...GlobalLogic Ukraine
 

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: Інструменти програміста
 
Студентський R&D проєкт – практичні навички для студентів без відриву від нав...
Студентський R&D проєкт – практичні навички для студентів без відриву від нав...Студентський R&D проєкт – практичні навички для студентів без відриву від нав...
Студентський R&D проєкт – практичні навички для студентів без відриву від нав...
 

Recently uploaded

Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdfhome
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxOlgaDidenko6
 
Проблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняПроблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняtetiana1958
 
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfssuser15a891
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfhome
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняAdriana Himinets
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxOlgaDidenko6
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»tetiana1958
 
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptssuser59e649
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptxssuserc301ed1
 
Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяssuser0a4f48
 
psychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptpsychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptOlgaDidenko6
 
Горбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxГорбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxOlgaDidenko6
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...JurgenstiX
 
Defectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxDefectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxOlgaDidenko6
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класkrementsova09nadya
 
Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxOlgaDidenko6
 

Recently uploaded (17)

Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdf
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptx
 
Проблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняПроблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішення
 
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповідання
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptx
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
 
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
 
Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентація
 
psychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptpsychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.ppt
 
Горбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxГорбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptx
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
 
Defectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxDefectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptx
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 клас
 
Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptx
 

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