Go, или Golang, — высокоуровневый язык программирования от Google. В нём объединена простота разработки Python и скорость работы C++. Чаще всего его используют для создания веб-сервисов и утилит. Например, на нём написаны инструменты Docker и Kubernetes.
Мастрид для новичка в Go: официальная документация
- Руководство, где все статьи разбиты по модулям. Здесь подробно объяснено, как установить язык и с чего начинать писать код.
- Блог — публикации, где объясняют возможности Go и рассказывают, как развивается язык. Например, какие улучшения появились в новой версии 1.20.
- Тур по синтаксису, где удобно изучать особенности языка. В каждой теме есть короткое описание и примеры кода. Тур небольшой, обучение займёт не больше недели.
- Effective Go — документ, который учит писать чистый и понятный код, чтобы его легко читали другие программисты. Ресурс дополняет спецификацию языка и тур по Go, которые нужно изучить в первую очередь.
- Go by Example — практическое руководство с примерами кода реальных программ. Есть удобная навигация по инструментам Go. Также доступна версия на русском языке.
- The Go Memory Model — раздел с описанием общего подхода, который используется в модели памяти языка.
- «Идиома конкурентности языка» — 30-минутная запись выступления одного из разработчиков языка Роба Пайка, где он рассказывает о конкурентности и параллелизме в Go.
Какие книги почитать
В дополнение к базовым ресурсам подобрали пять книг, с помощью которых вы сможете структурировать знания о языке Go.
«Head First. Изучаем Go»
Автор: Джей Макгаврен
О чём книга. В первой части автор рассказывает про базовые понятия, знакомит с типами данных, функциями, переменными и массивами. Вторая часть посвящена принципам работы с сетевыми коммуникациями, высоконагруженными системами и многопроцессорной обработкой. Текст написан простым языком, поэтому даже сложные темы усваиваются легко.
«Язык Go для начинающих»
Автор: Максим Жашкевич
О чём книга. Автор объясняет синтаксис Go и разбирает фундаментальные концепции языка: типы переменных, функции, массивы, интерфейсы, горутины и каналы. В последних главах показано, как разработать простой REST API.
Get Programming with Go
Авторы: Nathan Youngman, Roger Peppe
О чём книга. Ещё одна книга для начинающих разработчиков, у неё пока нет перевода на русский язык. Учебный материал разбит на 32 урока, после каждой главы читателю предлагают решить задачи, чтобы потренироваться и закрепить знания. В результате вы освоите основы языка, а также познакомитесь с более сложными темами, например с параллельным программированием на Go.
«Язык программирования Go»
Авторы: Алан Донован, Брайан Керниган
О чём книга. Авторы рассказывают о преимуществах Go, объясняют, как и зачем появился новый язык, учат писать эффективный код, который решает практические задачи. В первых главах читатель знакомится с основными концепциями языка: синтаксисом, управлением потоком выполнения, типами данных и организацией программ в виде пакетов, файлов и функций. Затем учится строить, тестировать и поддерживать проекты с помощью инструментов Go. Также есть отдельные разделы про методы и интерфейсы, параллелизм и низкоуровневые возможности языка.
«Go на практике»
Авторы: Мэтт Батчер, Мэтт Фарина
О чём книга. Это следующий уровень изучения Go. Авторы уже не объясняют основы — читателю важно их знать. Ещё полезно владеть другим языком программирования, например Java или C#. В книге рассказывают, как использовать Go в облаке, описывают нюансы тестирования и отладки, учат создавать веб-сервисы.
Что изучить дополнительно
- Аналог Tour of Go — это 50 статей, в которых автор объединил информацию из официальной документации и публикаций с личным опытом создания программ на Go. Ресурс будет полезен как начинающим, так и опытным разработчикам.
- Research!rsc — сайт, где один из разработчиков языка делится материалами о программировании и возможностях Go.
- Dave Cheney blog — блог разработчика Дэвида Чейни, который занимается развитием Go.
- Go Channels Internals — статья о каналах в Go, но уже на русском языке. В тексте есть ссылка на выступление с конференции Golang Conf 2019, на основании которого автор подготовил материал.
- Подкаст Go Time — разработчики обсуждают новости Go-комьюнити и делятся своим опытом.
- Канал Gopher Academy — записи выступлений с GopherCon, ежегодной конференции, которая посвящена разработке на Go.