SlideShare a Scribd company logo
Go под капотом
… точнее все что вам нужно знать про Go
Кто я?
Разработчик с опытом работы в различных
сферах IT. Начиная с Web и Mobile заканчивая
серверными приложениями, распределенными БД
и DevOps. Создавал автоматическую систему
диспетчеризации заказов такси, делал сайты,
коробочные web продукты, поднимал
инфраструктуру в AWS (CoreOS stack), настраивал
автоматический deployment и обновление. Сейчас
в команде Dar Ecosystem. Занимаюсь проектом
Dar Play. Docker. Go. NoSQL.
Почему Go?
• Быстрая разработка
• Типо-безопасность
• Быстрая компиляция
• Эффективное использование “железа”
• Многопоточность
Тур по Go
https://tour.golang.org/welcome/1
Результат тура
• С подобный синтаксис
• Компилируемый в статический бинарный файл
• Статическая типизация с неявным указанием типов
• Структурная система типов
• Горутины, каналы
• Сборщик мусора
• Нет неявных преобразований
• Интерфейсы наше все
Инструменты Go
Компилятор
• Создает syntax tree, проверяет его, переписывает
всякий сахар, создает объектные файлы (*.o)
• Статический бинарник, работает даже без go runtime
на любой машине со схожей архитектурой ядра
• Если А.go зависит от B.go который зависит от C.go то
• Скомпилировать С.go, B.go потом A.go
• Чтобы скомпилировать A.go нужен только B.o (в
нем уже есть С.o)
Go Runtime
Сборщик мусора
• Сoncurrent, tri-color, mark-sweep collector
• Scan, mark, sweep stages
• White, grey or black objects
• Heap as a connected graph
• Mutator, write barrier
Scheduler
• Goroutine (G), OS thread (M), logical processor unit
(P)
• Gouroutines multiplexed on GOMAXPROCS
system threads
Что еще есть?
• go fmt - форматирование кода
• go doc - авто документация
• go get - загрузка зависимостей
Я все!

More Related Content

What's hot

Networks for beginners
Networks for beginnersNetworks for beginners
Networks for beginners
Andrew Minkin
 
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
Ontico
 
Обработка геоданных в Go
Обработка геоданных в GoОбработка геоданных в Go
Обработка геоданных в Go
Andrew Minkin
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
Alex Chistyakov
 
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Yandex
 
GDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в GoGDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в Go
Andrew Minkin
 
Frontend - экосистема и будущее: iforum 2015
Frontend - экосистема и будущее: iforum 2015Frontend - экосистема и будущее: iforum 2015
Frontend - экосистема и будущее: iforum 2015
Eldar Djafarov
 
Elasticsearch(java) fluentd(ruby) kibana(javascript)
Elasticsearch(java)fluentd(ruby) kibana(javascript)Elasticsearch(java)fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentd(ruby) kibana(javascript)
Александр Сигачев
 
Разработка кроссплатформенного фреймворка на С++ для мобильных платформ / Вла...
Разработка кроссплатформенного фреймворка на С++ для мобильных платформ / Вла...Разработка кроссплатформенного фреймворка на С++ для мобильных платформ / Вла...
Разработка кроссплатформенного фреймворка на С++ для мобильных платформ / Вла...
Ontico
 
Роман Янковский (Devexperts)
Роман Янковский (Devexperts)Роман Янковский (Devexperts)
Роман Янковский (Devexperts)Ontico
 
"Обзор Tarantool DB"
"Обзор Tarantool DB""Обзор Tarantool DB"
"Обзор Tarantool DB"
Badoo Development
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)
Roman Dvornov
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Anton Baranov
 
Фронтенд для миллионов (НН)
Фронтенд для миллионов (НН)Фронтенд для миллионов (НН)
Фронтенд для миллионов (НН)
Anastasia Goryacheva
 
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON
 

What's hot (15)

Networks for beginners
Networks for beginnersNetworks for beginners
Networks for beginners
 
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
 
Обработка геоданных в Go
Обработка геоданных в GoОбработка геоданных в Go
Обработка геоданных в Go
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
 
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
 
GDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в GoGDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в Go
 
Frontend - экосистема и будущее: iforum 2015
Frontend - экосистема и будущее: iforum 2015Frontend - экосистема и будущее: iforum 2015
Frontend - экосистема и будущее: iforum 2015
 
Elasticsearch(java) fluentd(ruby) kibana(javascript)
Elasticsearch(java)fluentd(ruby) kibana(javascript)Elasticsearch(java)fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentd(ruby) kibana(javascript)
 
Разработка кроссплатформенного фреймворка на С++ для мобильных платформ / Вла...
Разработка кроссплатформенного фреймворка на С++ для мобильных платформ / Вла...Разработка кроссплатформенного фреймворка на С++ для мобильных платформ / Вла...
Разработка кроссплатформенного фреймворка на С++ для мобильных платформ / Вла...
 
Роман Янковский (Devexperts)
Роман Янковский (Devexperts)Роман Янковский (Devexperts)
Роман Янковский (Devexperts)
 
"Обзор Tarantool DB"
"Обзор Tarantool DB""Обзор Tarantool DB"
"Обзор Tarantool DB"
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
 
Фронтенд для миллионов (НН)
Фронтенд для миллионов (НН)Фронтенд для миллионов (НН)
Фронтенд для миллионов (НН)
 
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
 

Viewers also liked

Analizando Mi Vida
Analizando Mi VidaAnalizando Mi Vida
Analizando Mi VidaJess Buretti
 
PC Blindado Antivírus
PC Blindado AntivírusPC Blindado Antivírus
PC Blindado AntivírusPCBlindado
 
Ch 3.2 invest 2
Ch 3.2 invest 2Ch 3.2 invest 2
Ch 3.2 invest 2hgraffam
 
Protocolo
ProtocoloProtocolo
Protocolo
Omar Mendoza
 
Présentation catalogue L&E Cosmétiques 2015
Présentation catalogue L&E Cosmétiques 2015Présentation catalogue L&E Cosmétiques 2015
Présentation catalogue L&E Cosmétiques 2015
Youssef Jwakech
 
การออกแบบสิ่งแวดล้อม การเรียนรู้บนเครือข่าย
การออกแบบสิ่งแวดล้อมการเรียนรู้บนเครือข่ายการออกแบบสิ่งแวดล้อมการเรียนรู้บนเครือข่าย
การออกแบบสิ่งแวดล้อม การเรียนรู้บนเครือข่าย
mutto kung
 
ภารกิจที่ 1 ความหมายของการเรียนรู้บนเครือข่าย พัฒนาการ และเทคโนโลยีการเรียนรู...
ภารกิจที่ 1 ความหมายของการเรียนรู้บนเครือข่าย พัฒนาการ และเทคโนโลยีการเรียนรู...ภารกิจที่ 1 ความหมายของการเรียนรู้บนเครือข่าย พัฒนาการ และเทคโนโลยีการเรียนรู...
ภารกิจที่ 1 ความหมายของการเรียนรู้บนเครือข่าย พัฒนาการ และเทคโนโลยีการเรียนรู...
Meenarat Bunkanha
 
Process Storytelling - New York Business Process Professionals Meetup
Process Storytelling - New York Business Process Professionals MeetupProcess Storytelling - New York Business Process Professionals Meetup
Process Storytelling - New York Business Process Professionals Meetup
Samuel Chin, PMP, CSM
 
Ch1-Operating System Concept
Ch1-Operating System ConceptCh1-Operating System Concept
Ch1-Operating System Concept
Muhammad Bilal Tariq
 
Code of conduct for public services
Code of conduct for public servicesCode of conduct for public services
Code of conduct for public services
Oleg Lagodiyenko
 
Trabalho Prática de Ensino Maio13
Trabalho Prática de Ensino Maio13Trabalho Prática de Ensino Maio13
Trabalho Prática de Ensino Maio13
Ana Polo
 
Existing situation and proposed solutions to improve Cybersecurity in Ukraine
Existing situation and proposed solutions to improve Cybersecurity in UkraineExisting situation and proposed solutions to improve Cybersecurity in Ukraine
Existing situation and proposed solutions to improve Cybersecurity in Ukraine
Alexey Yankovski
 
Process Improvement for Operations vs Projects - What's the Difference? (NYBP...
Process Improvement for Operations vs Projects - What's the Difference? (NYBP...Process Improvement for Operations vs Projects - What's the Difference? (NYBP...
Process Improvement for Operations vs Projects - What's the Difference? (NYBP...
Samuel Chin, PMP, CSM
 
Informe practicas i de Ingenieria Civil
Informe practicas i de Ingenieria CivilInforme practicas i de Ingenieria Civil
Informe practicas i de Ingenieria Civil
Ingeniero Edwin Torres Rodríguez
 
Merger and analysis ppt
Merger and analysis pptMerger and analysis ppt
Merger and analysis ppt
Sagar Srivastava
 
Você me leva ao deserto ministerio zoe
Você me leva ao deserto ministerio zoeVocê me leva ao deserto ministerio zoe
Você me leva ao deserto ministerio zoe
Mylena Vasconcelos
 
Pagkilala sa sumulat ng Noli Me Tangere
Pagkilala sa sumulat ng Noli Me TangerePagkilala sa sumulat ng Noli Me Tangere
Pagkilala sa sumulat ng Noli Me Tangere
Ghie Maritana Samaniego
 

Viewers also liked (17)

Analizando Mi Vida
Analizando Mi VidaAnalizando Mi Vida
Analizando Mi Vida
 
PC Blindado Antivírus
PC Blindado AntivírusPC Blindado Antivírus
PC Blindado Antivírus
 
Ch 3.2 invest 2
Ch 3.2 invest 2Ch 3.2 invest 2
Ch 3.2 invest 2
 
Protocolo
ProtocoloProtocolo
Protocolo
 
Présentation catalogue L&E Cosmétiques 2015
Présentation catalogue L&E Cosmétiques 2015Présentation catalogue L&E Cosmétiques 2015
Présentation catalogue L&E Cosmétiques 2015
 
การออกแบบสิ่งแวดล้อม การเรียนรู้บนเครือข่าย
การออกแบบสิ่งแวดล้อมการเรียนรู้บนเครือข่ายการออกแบบสิ่งแวดล้อมการเรียนรู้บนเครือข่าย
การออกแบบสิ่งแวดล้อม การเรียนรู้บนเครือข่าย
 
ภารกิจที่ 1 ความหมายของการเรียนรู้บนเครือข่าย พัฒนาการ และเทคโนโลยีการเรียนรู...
ภารกิจที่ 1 ความหมายของการเรียนรู้บนเครือข่าย พัฒนาการ และเทคโนโลยีการเรียนรู...ภารกิจที่ 1 ความหมายของการเรียนรู้บนเครือข่าย พัฒนาการ และเทคโนโลยีการเรียนรู...
ภารกิจที่ 1 ความหมายของการเรียนรู้บนเครือข่าย พัฒนาการ และเทคโนโลยีการเรียนรู...
 
Process Storytelling - New York Business Process Professionals Meetup
Process Storytelling - New York Business Process Professionals MeetupProcess Storytelling - New York Business Process Professionals Meetup
Process Storytelling - New York Business Process Professionals Meetup
 
Ch1-Operating System Concept
Ch1-Operating System ConceptCh1-Operating System Concept
Ch1-Operating System Concept
 
Code of conduct for public services
Code of conduct for public servicesCode of conduct for public services
Code of conduct for public services
 
Trabalho Prática de Ensino Maio13
Trabalho Prática de Ensino Maio13Trabalho Prática de Ensino Maio13
Trabalho Prática de Ensino Maio13
 
Existing situation and proposed solutions to improve Cybersecurity in Ukraine
Existing situation and proposed solutions to improve Cybersecurity in UkraineExisting situation and proposed solutions to improve Cybersecurity in Ukraine
Existing situation and proposed solutions to improve Cybersecurity in Ukraine
 
Process Improvement for Operations vs Projects - What's the Difference? (NYBP...
Process Improvement for Operations vs Projects - What's the Difference? (NYBP...Process Improvement for Operations vs Projects - What's the Difference? (NYBP...
Process Improvement for Operations vs Projects - What's the Difference? (NYBP...
 
Informe practicas i de Ingenieria Civil
Informe practicas i de Ingenieria CivilInforme practicas i de Ingenieria Civil
Informe practicas i de Ingenieria Civil
 
Merger and analysis ppt
Merger and analysis pptMerger and analysis ppt
Merger and analysis ppt
 
Você me leva ao deserto ministerio zoe
Você me leva ao deserto ministerio zoeVocê me leva ao deserto ministerio zoe
Você me leva ao deserto ministerio zoe
 
Pagkilala sa sumulat ng Noli Me Tangere
Pagkilala sa sumulat ng Noli Me TangerePagkilala sa sumulat ng Noli Me Tangere
Pagkilala sa sumulat ng Noli Me Tangere
 

Similar to Go под капотом

DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.
Alexander Titov
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TKConf
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Глеб Тарасов
 
Как делать глобальный проект
Как делать глобальный проектКак делать глобальный проект
Как делать глобальный проектisdeforum
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
Andrew Gubskiy
 
Big switch: жизнь после Microsoft
Big switch: жизнь после MicrosoftBig switch: жизнь после Microsoft
Big switch: жизнь после MicrosoftAlexander Byndyu
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложении
Voximplant
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
Sergey Skvortsov
 
Microsoft , Azure и Drupal
Microsoft , Azure и DrupalMicrosoft , Azure и Drupal
Microsoft , Azure и Drupal
PVasili
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
Владимир Кожаев
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
Anton Piskunov
 
Проектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-системПроектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-систем
TKConf
 
Точка кипения: проектирование крупных веб-систем
Точка кипения:  проектирование крупных веб-системТочка кипения:  проектирование крупных веб-систем
Точка кипения: проектирование крупных веб-систем
Roman Ivliev
 
Локализация - как делать глобальный проект?
Локализация - как делать глобальный проект?Локализация - как делать глобальный проект?
Локализация - как делать глобальный проект?
Alconost
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
Pavlo Iuriichuk
 
Xe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леоновXe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леонов
Екатерина Макарова
 

Similar to Go под капотом (20)

DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
 
Как делать глобальный проект
Как делать глобальный проектКак делать глобальный проект
Как делать глобальный проект
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Big switch: жизнь после Microsoft
Big switch: жизнь после MicrosoftBig switch: жизнь после Microsoft
Big switch: жизнь после Microsoft
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложении
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
Microsoft , Azure и Drupal
Microsoft , Azure и DrupalMicrosoft , Azure и Drupal
Microsoft , Azure и Drupal
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
Проектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-системПроектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-систем
 
Точка кипения: проектирование крупных веб-систем
Точка кипения:  проектирование крупных веб-системТочка кипения:  проектирование крупных веб-систем
Точка кипения: проектирование крупных веб-систем
 
Локализация - как делать глобальный проект?
Локализация - как делать глобальный проект?Локализация - как делать глобальный проект?
Локализация - как делать глобальный проект?
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
 
Sivko
SivkoSivko
Sivko
 
Xe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леоновXe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леонов
 

Go под капотом

  • 1. Go под капотом … точнее все что вам нужно знать про Go
  • 2. Кто я? Разработчик с опытом работы в различных сферах IT. Начиная с Web и Mobile заканчивая серверными приложениями, распределенными БД и DevOps. Создавал автоматическую систему диспетчеризации заказов такси, делал сайты, коробочные web продукты, поднимал инфраструктуру в AWS (CoreOS stack), настраивал автоматический deployment и обновление. Сейчас в команде Dar Ecosystem. Занимаюсь проектом Dar Play. Docker. Go. NoSQL.
  • 3. Почему Go? • Быстрая разработка • Типо-безопасность • Быстрая компиляция • Эффективное использование “железа” • Многопоточность
  • 5. Результат тура • С подобный синтаксис • Компилируемый в статический бинарный файл • Статическая типизация с неявным указанием типов • Структурная система типов • Горутины, каналы • Сборщик мусора • Нет неявных преобразований • Интерфейсы наше все
  • 7. Компилятор • Создает syntax tree, проверяет его, переписывает всякий сахар, создает объектные файлы (*.o) • Статический бинарник, работает даже без go runtime на любой машине со схожей архитектурой ядра • Если А.go зависит от B.go который зависит от C.go то • Скомпилировать С.go, B.go потом A.go • Чтобы скомпилировать A.go нужен только B.o (в нем уже есть С.o)
  • 9. Сборщик мусора • Сoncurrent, tri-color, mark-sweep collector • Scan, mark, sweep stages • White, grey or black objects • Heap as a connected graph • Mutator, write barrier
  • 10.
  • 11. Scheduler • Goroutine (G), OS thread (M), logical processor unit (P) • Gouroutines multiplexed on GOMAXPROCS system threads
  • 12.
  • 13. Что еще есть? • go fmt - форматирование кода • go doc - авто документация • go get - загрузка зависимостей