Как самостоятельно освоить Go: подборка полезных материалов

Go занимает десятое место в списке самых используемых языков. Он отличается минималистичным и понятным синтаксисом: в языке около 25 ключевых слов и нет наследования, классов, объектов и сложных функций. Поэтому его можно быстро освоить с нуля. Делимся ресурсами, которые в этом помогут

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.