Go под капотом
-
Upload
idris-djumanov -
Category
Technology
-
view
10 -
download
0
Transcript of Go под капотом
![Page 1: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/1.jpg)
Go под капотом… точнее все что вам нужно знать про Go
![Page 2: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/2.jpg)
Кто я?Разработчик с опытом работы в различных
сферах IT. Начиная с Web и Mobile заканчивая серверными приложениями, распределенными БД и DevOps. Создавал автоматическую систему диспетчеризации заказов такси, делал сайты, коробочные web продукты, поднимал инфраструктуру в AWS (CoreOS stack), настраивал автоматический deployment и обновление. Сейчас в команде Dar Ecosystem. Занимаюсь проектом Dar Play. Docker. Go. NoSQL.
![Page 3: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/3.jpg)
Почему Go?• Быстрая разработка
• Типо-безопасность
• Быстрая компиляция
• Эффективное использование “железа”
• Многопоточность
![Page 4: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/4.jpg)
Тур по Gohttps://tour.golang.org/welcome/1
![Page 5: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/5.jpg)
Результат тура• С подобный синтаксис
• Компилируемый в статический бинарный файл
• Статическая типизация с неявным указанием типов
• Структурная система типов
• Горутины, каналы
• Сборщик мусора
• Нет неявных преобразований
• Интерфейсы наше все
![Page 6: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/6.jpg)
Инструменты Go
![Page 7: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/7.jpg)
Компилятор• Создает syntax tree, проверяет его,
переписывает всякий сахар, создает объектные файлы (*.o)
• Статический бинарник, работает даже без go runtime на любой машине со схожей архитектурой ядра
• Если А.go зависит от B.go который зависит от C.go то
• Скомпилировать С.go, B.go потом A.go
• Чтобы скомпилировать A.go нужен только B.o (в нем уже есть С.o)
![Page 8: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/8.jpg)
Go Runtime
![Page 9: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/9.jpg)
Сборщик мусора• Сoncurrent, tri-color, mark-sweep collector
• Scan, mark, sweep stages
• White, grey or black objects
• Heap as a connected graph
• Mutator, write barrier
![Page 10: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/10.jpg)
![Page 11: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/11.jpg)
Scheduler
• Goroutine (G), OS thread (M), logical processor unit (P)
• Gouroutines multiplexed on GOMAXPROCS system threads
![Page 12: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/12.jpg)
![Page 13: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/13.jpg)
Что еще есть?
• go fmt - форматирование кода
• go doc - авто документация
• go get - загрузка зависимостей
![Page 14: Go под капотом](https://reader035.fdocument.pub/reader035/viewer/2022081604/589c4d211a28ab227d8b60e5/html5/thumbnails/14.jpg)
Я все!