Онлайн-курсы
- Для быстрого погружения в Go рекомендуем прочитать статью «Дорожная карта Go-разработчика в 2023 году», которая поможет составить структурированный план обучения.
Онлайн-курсы – это отличная возможность изучить основы языка в интерактивной форме и понять, насколько он вам интересен. Они не требуют специальных знаний на старте, поэтому отлично подойдут для знакомства с программированием, в отличие от многотомных учебников и мануалов.
По традиции путь изучения Go начинается с прохождения Tour of Go – интерактивного самоучителя по основам языка от его создателей. Здесь собраны все необходимые знания для освоения синтаксиса Go, и даже немного продвинутых тем.
Особенностью курса является отсутствие видео-уроков: весь материал объясняется в кратких теоретических справках. Каждая тема снабжена конкретными примерами и поучительными задачами с автоматической проверкой. Они варьируются по степени сложности, но для их выполнения достаточно внимательного чтения теории.
Стоит отметить, что весь туториал написан на английском языке, поэтому представляем список альтернативных курсов на русском:
- Программирование на Golang (Stepik). В этом курсе изучаются основы языка, а также продвинутые темы, такие как работа с файлами и json, создание и развертывание веб-сервера. Важное место уделено заданиям разного уровня сложности, которые позволяют лучше понять материал и закрепить его на практике.
- Go (Golang) – первое знакомство (Stepik). В курсе представлены основные концепции Go, достаточные для того, чтобы получить о нём базовое представление и понять, стоит ли изучать его на более глубоком уровне. Для успешного прохождения желательно иметь хотя бы минимальное представление о программировании.
- Курс по основам Go (Code Basics). На этом курсе из 35 уроков рассматриваются базовые конструкции языка, коллекции, строки, функции и методы, конкурентное программирование. Теория подкрепляется практическими задачами с автоматической проверкой и решениями.
YouTube-каналы
Много полезной информации можно найти на YouTube каналах. Туториалы, подкасты, разбор внутреннего устройства языка – все это собрано здесь.
Представляем список наиболее популярных русскоязычных каналов:
- Николай Тузов — Golang. Николай в доступной форме объясняет основные концепции Go и его внутреннее устройство. На канале часто проводятся подкасты с экспертными Go-разработчиками, в которых обсуждаются важные обновления, проводятся code review проектов, затрагиваются темы профессионального роста, скорости разработки, и другие.
- Maksim Zhashkevych. На канале вы найдете много полезных уроков по backend-разработке на Go. Программирование веб-сервисов, работа с базами данных и API, CI / CD, тестирование – это лишь малый список тем, которые автор затрагивает в своих видео.
- The Art of Development. Автор канала записал полноценный курс из 20 видео по основам программирования на Go, в котором на понятных примерах объяснил концепции языка и показал, как разработать go приложение с развертыванием в docker.
Сайты с теорией
- Документация + Блог. Документация языка – самый авторитетный и исчерпывающий источник информации, к которому нужно обращаться в первую очередь. Здесь можно найти практические уроки по разработке веб-сервиса, рекомендации по эффективному написанию кода на Go, исходный код языка и многое другое.
- Введение в программирование на Go. На этом сайте с первого урока делается упор на разбор и написание кода, что позволяет увидеть, как теория работает на практических примерах. Помимо стандартных тем, рассматриваются особенности стандартной библиотеки, тестирование кода и рекомендации по дальнейшему изучению языка.
- Go в примерах. Сайт содержит конкретные примеры применения синтаксиса языка и затрагивает как базовые, так и продвинутые темы, такие как процессы, сигналы и хеширование.
- The Golang Handbook. Структурированное пособие на английском языке, которое сопровождается короткими видео с доступным объяснением основных концепций. Отлично подойдет тем, кто хочет в кратчайшие сроки разобраться с синтаксисом языка и начать писать собственные программы.
Сайты с задачами
Решение задач – это отличный способ развить мышление, научиться анализировать код и подготовиться к техническим интервью. Можно ставить себе задачи самостоятельно, например «написать алгоритм сортировки подсчетом», а можно воспользоваться уже существующими сайтами с готовыми условиями и тестирующей системой.
Вот наиболее подходящие для новичков ресурсы с обширной базой задач и развитым сообществом:
- Codewars. Англоязычная площадка для решения задач на популярных языках программирования, включая Go. Есть задачи как на отработку синтаксических конструкций, так и на более сложные алгоритмические темы.
- Leetcode. Классический ресурс для подготовки к техническим собеседованиям. Большинство задач взяты с реальных coding-интервью и разделены на три уровня сложности: easy, medium и hard. Отлично подойдет для отработки алгоритмов и структур данных на Go.
- Exercism. Сайт содержит интерактивные пособия по изучению популярных языков программирования, включая Go. Теория преподается последовательно, а задания заточены под применение базовых конструкций и проверяют умение писать простейшие программы.
- Codeforces. Популярная во всем мире площадка для участия в онлайн-соревнованиях по спортивному программированию. Также здесь можно решать задачи из открытого архива, участвовать в виртуальных соревнованиях и делиться знаниями в блоге. Отлично подходит для подготовки к алгоритмическим собеседованиям.
Книги и самоучители
Книги по программированию, как правило, содержат всю необходимую теорию для погружения в язык и его внутреннее устройство. Чтобы читателям не приходилось тратить время на выбор, представляем подборку наиболее подходящих трудов для изучения Go с нуля:
«Язык программирования Go», Алан Донован, Брайан Керниган.
Традиционно новичкам рекомендуют начать изучение Go с этой монументальной книги. Она представляет обширный обзор основных концепций и особенностей языка, начиная с основ и до более сложных тем. В книге отдельное внимание уделено примерам кода и задачам, чтобы помочь читателям углубить понимание и научиться применять полученные знания на практике. Это поистине фундаментальный труд для изучения Go от его создателей, однако для быстрого и эффективного старта лучше подойдут перечисленные ниже книги.
«Head First. Изучаем Go», Джей Макгаврен
Издания серии Head First известны своей оригинальной подачей материала с использованием наглядных иллюстраций, карикатур и интересных заданий, которые помогают лучше запомнить пройденные темы. Книга позволяет в быстром темпе освоить классические приемы в разработке на Go и на практических примерах познакомиться с его особенностями.
«Язык Go для начинающих», Максим Жашкевич
Автор доступным языком объясняет синтаксис Go и фундаментальные концепции разработки. Отдельное внимание уделено применению Go в разработке веб-приложений. Для закрепления теории в заключительной части книги содержится туториал по разработке полноценного REST API.
«Программирование на языке Go», Марк Саммерфильд
По словам автора, эта книга представляет собой одновременно и учебник, и справочник, в котором содержатся все необходимые знания для освоения Go и создания на нём высокопроизводительных программ. Отличительной чертой этого пособия является то, что здесь с самого нуля в полном объеме объясняются аспекты конкурентного программирования и ООП.
Подведём итоги
В этом уроке мы рассмотрели полезные материалы для самостоятельного изучения Go и отобрали из них самые подходящие для новичков.
В следующем уроке разберем первую программу на Go, настроим модули и скомпилируем исходный код.
Содержание самоучителя
- Особенности и сфера применения Go, установка, настройка
- Ресурсы для изучения Go с нуля
- Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
- Переменные. Типы данных и их преобразования. Основные операторы
- Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
- Функции и аргументы. Области видимости. Рекурсия. Defer
- Массивы и слайсы. Append и сopy. Пакет slices
- Строки, руны, байты. Пакет strings. Хеш-таблица (map)
- Структуры и методы. Интерфейсы. Указатели. Основы ООП
- Наследование, абстракция, полиморфизм, инкапсуляция
- Обработка ошибок. Паника. Восстановление. Логирование
- Обобщенное программирование. Дженерики
- Работа с датой и временем. Пакет time
- Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
- Конкурентность. Горутины. Каналы
- Тестирование кода и его виды. Table-driven подход. Параллельные тесты
- Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
Комментарии