go под капотом
TRANSCRIPT
Go под капотом… точнее все что вам нужно знать про Go
Кто я?Разработчик с опытом работы в различных
сферах IT. Начиная с Web и Mobile заканчивая серверными приложениями, распределенными БД и DevOps. Создавал автоматическую систему диспетчеризации заказов такси, делал сайты, коробочные web продукты, поднимал инфраструктуру в AWS (CoreOS stack), настраивал автоматический deployment и обновление. Сейчас в команде Dar Ecosystem. Занимаюсь проектом Dar Play. Docker. Go. NoSQL.
Почему Go?• Быстрая разработка
• Типо-безопасность
• Быстрая компиляция
• Эффективное использование “железа”
• Многопоточность
Тур по Gohttps://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 - загрузка зависимостей
Я все!