Курс Котодаты · Go в браузере

Go с нуля

Простой и строгий язык для серверов и сервисов

Начинаем с короткой программы и за 30 уроков доходим до пула горутин, который разбирает очередь заказов. Справа — не картинка: это тот же тренажёр, что в уроках. Поменяйте код и запустите.

1 990 ₽ за весь курс, один раз и навсегда. Первый урок открыт бесплатно — нужна только регистрация.

  • Код запускается прямо в уроке
  • 157 задач с проверкой запуском
  • 7 проектов: от чека такси до обработки заказов
  • Ничего не нужно устанавливать
Попробуйте формат
Настоящий код

Измените код и нажмите «Запустить»

Ctrl + Enter

Код выполняет тот же тренажёр, что в уроках. Он загружается по первому нажатию «Запустить» и занимает около 280 КБ.

Нажмите «Запустить» — вывод программы появится здесь.

О языке

Три черты Go, которые вы почувствуете с первых уроков

О них чаще всего спрашивают, прежде чем браться за язык, — и место в курсе, где каждая разобрана.

Слышал, что Go придирчив: лишняя переменная или лишний импорт — и программа не запустится.
Модули 1–2

Так и есть, и сделано это нарочно. Вы сразу читаете сообщения компилятора, а тренажёр объясняет каждое по-русски и показывает строку, с которой искать причину. На маленьких программах к строгости привыкаешь быстро.

Не понимаю, как в Go обрабатывают ошибки: исключений там нет.
Модули 3 и 6

Ошибка в Go — обычное значение, которое функция возвращает рядом с результатом. Вы учитесь создавать её, проверять, дополнять подробностями и узнавать причину, даже если ошибка завёрнута в несколько слоёв.

Все говорят про горутины и каналы, а что это такое — непонятно.
Модуль 7

Пять уроков: от слова go и ожидания задач до каналов, select, мьютексов и пула обработчиков. В конце — проект, где несколько горутин обрабатывают очередь заказов.

Результат

Четыре вещи, которые вы будете делать сами

Каждую из них проверяет проект модуля — если он сдан, значит, умеете.

Разобрать и свести данные

Прочитать текст по буквам, посчитать слова, сгруппировать записи по ключу и отсортировать их по своему правилу.

Описать предметную область

Заказ, книга, сотрудник — своими типами с методами, а разные варианты поведения — через интерфейсы.

Обработать ошибки, как принято в Go

Вернуть ошибку из функции, добавить к ней контекст и по причине решить, что делать дальше.

Запустить задачи одновременно

Раздать работу горутинам, собрать результаты по каналу, не ждать дольше нужного и защитить общие данные.

Где вы окажетесь после курса

На уровне «пишу небольшие программы на Go сам и понимаю чужой несложный код». Это основа, а не профессия: веб-серверы, базы данных, сеть, обобщённые типы и сборка проекта из нескольких пакетов в курс не входят. Вакансию он не гарантирует, и обещать её мы не станем.

Проекты

7 проектов: каждый следующий умеет больше предыдущего

Первый считает стоимость поездки на такси и печатает чек. Последний запускает пул горутин, который обрабатывает очередь заказов и укладывается в отведённое время. Между ними — пять ступенек, и на каждой программа умеет чуть больше.

Образца перед глазами нет: есть описание поведения и тесты. Они запускают вашу программу на обычных данных, на пустых и на испорченных — и показывают, на чём она споткнулась.

  1. Модуль 1

    Стоимость поездки

    Программа считает цену поездки на такси по тарифу: посадка, километры, минуты ожидания — и печатает чек.

  2. Модуль 2

    Календарь месяца

    Программа печатает календарь месяца сеткой: по дням недели, с пустыми клетками до первого числа.

  3. Модуль 3

    Разбор показаний счётчиков

    Программа разбирает показания счётчика, объясняет ошибки с понятным контекстом и считает расход и сумму к оплате.

  4. Модуль 4

    Частотный словарь

    Программа разбирает текст, считает слова без учёта регистра и знаков препинания и печатает самые частые.

  5. Модуль 5

    Библиотека

    Учёт книг: выдача и возврат, поиск по автору и список должников — на структурах и методах.

  6. Модуль 6

    Рассылка уведомлений

    Письма, СМС и сообщения в мессенджер через один интерфейс — с отчётом об отправке и ошибках.

  7. Модуль 7

    Обработка заказов

    Пул из нескольких горутин обрабатывает очередь заказов, собирает итоги и укладывается в отведённое время.

Как проходит урок

Абзац — запуск — задача

Один приём за раз: объяснили, показали в работе, дали попробовать. И так до конца урока.

Пример уже выполнен. Добавьте в срез ещё одну цену и запустите ещё раз
  1. 1
    Примеры живые

    Каждый пример запускается кнопкой, а ещё его можно открыть в тренажёре и поменять под себя.

  2. 2
    Ломать можно и нужно

    В уроках есть примеры, которые не скомпилируются нарочно: вы видите сообщение компилятора раньше, чем получите его сами.

  3. 3
    Ошибка — с переводом

    Рядом с сообщением Go — что оно значит по-русски и с какой строки искать причину.

Два теста прошли, третий подал пустой срез — и деление на ноль вернуло NaN вместо ошибки
  1. 4
    Тесты вызывают ваш код

    Не сверяют с образцом, а запускают функцию с разными данными. Как вы её написали — ваше дело.

  2. 5
    Проверяют то, о чём забывают

    Пустой срез, ноль, значение ровно на границе, испорченная строка. Через пару модулей вы начнёте думать о них заранее.

  3. 6
    Подсказки, а не ответы

    Первая наводит на мысль, следующая сужает поиск. Готовое решение открывается последним.

Задачи четырёх видов: угадать вывод программы, выбрать ответ, починить чужой код, написать свой. Чужой код чинят в каждом уроке — это половина работы программиста.

Программа

7 модулей, 30 уроков

Сначала основа: значения, условия, циклы. Потом функции и ошибки, наборы данных, свои типы и интерфейсы. Последний модуль — одновременная работа задач, ради которой Go часто и выбирают. Раскройте модуль — под каждым уроком написано, что вы в нём делаете.

7 модулей · 30 уроков · 7 проектов
1Первая программа4 урока
  1. Первая программа: package, func main и fmtВы запускаете первую программу и разбираете, из чего она состоит.
  2. Переменные и типы: var, := и нулевые значенияВы заводите переменные под данные и узнаёте, почему Go не даёт оставить лишнюю.
  3. Числа: деление, остаток и преобразование типовВы считаете целыми и дробными числами и переводите одно в другое явно.
  4. Строки и форматированный вывод: PrintfВы собираете фразы из данных и печатаете ровные таблицы.

Проект: Стоимость поездки. Программа считает цену поездки на такси по тарифу: посадка, километры, минуты ожидания — и печатает чек.

В итоге: пишете программу, которая берёт данные, считает результат и аккуратно его печатает.

2Условия и циклы4 урока
  1. Условия: if, else и логикаВы учите программу выбирать, что делать, по условию.
  2. Выбор из многих: switchВы заменяете длинные цепочки if на понятный switch.
  3. Цикл for: три формы одного циклаВы повторяете действия заданное число раз и пока выполняется условие.
  4. Вложенные циклы, break и continueВы перебираете пары и таблицы и выходите из цикла вовремя.

Проект: Календарь месяца. Программа печатает календарь месяца сеткой: по дням недели, с пустыми клетками до первого числа.

В итоге: пишете программы с ветвлениями и повторениями — основу любого алгоритма.

3Функции и ошибки4 урока
  1. Функции: параметры и несколько результатовВы выносите расчёт в функцию и возвращаете из неё сразу два значения.
  2. Ошибки как значения: error и if err != nilВы сообщаете об ошибке из функции и обрабатываете её там, где вызвали.
  3. Функции как значения и замыканияВы передаёте функцию в функцию и делаете счётчик на замыкании.
  4. defer, panic и recoverВы откладываете действие до выхода из функции и разбираетесь, что такое паника.

Проект: Разбор показаний счётчиков. Программа разбирает показания счётчика, объясняет ошибки с понятным контекстом и считает расход и сумму к оплате.

В итоге: делите программу на функции и обрабатываете ошибки так, как принято в Go.

4Срезы, строки и отображения5 уроков
  1. Массивы и срезы: append и rangeВы храните список значений и обходите его циклом.
  2. Срезы изнутри: длина, ёмкость и общая памятьВы разбираетесь, почему изменение одного среза меняет другой.
  3. Строки, байты и руныВы правильно считаете буквы в русском тексте и разбираете строки на части.
  4. Отображения: mapВы считаете, группируете и ищете по ключу.
  5. Сортировка: sort и slicesВы сортируете числа, строки и записи по своему правилу.

Проект: Частотный словарь. Программа разбирает текст, считает слова без учёта регистра и знаков препинания и печатает самые частые.

В итоге: работаете с наборами данных: списками, словарями и текстом.

5Структуры и методы4 урока
  1. Структуры: свои типы данныхВы описываете товар, заказ и сотрудника своими типами.
  2. Указатели: &, * и nilВы меняете значение внутри функции через указатель.
  3. Методы: значение и указательВы добавляете типам свои действия и выбираете вид получателя.
  4. Встраивание и конструкторыВы собираете тип из других типов и создаёте значения через New.

Проект: Библиотека. Учёт книг: выдача и возврат, поиск по автору и список должников — на структурах и методах.

В итоге: моделируете предметную область своими типами с методами.

6Интерфейсы4 урока
  1. Интерфейсы: поведение вместо типаВы пишете одну функцию для разных типов, у которых есть нужные методы.
  2. any, проверка типа и switch по типуВы достаёте конкретное значение из интерфейса и различаете типы.
  3. Stringer и свои ошибкиВы учите свои типы красиво печататься и создаёте свои типы ошибок.
  4. Обёртки ошибок: %w, errors.Is и errors.AsВы добавляете к ошибке контекст и узнаёте её причину.

Проект: Рассылка уведомлений. Письма, СМС и сообщения в мессенджер через один интерфейс — с отчётом об отправке и ошибках.

В итоге: пишете гибкий код через интерфейсы и разбираетесь в ошибках любой глубины.

7Горутины и каналы5 уроков
  1. Горутины и sync.WaitGroupВы запускаете задачи одновременно и дожидаетесь, пока все закончат.
  2. Каналы: передача данных между горутинамиВы передаёте результаты по каналу и закрываете его, когда данных больше нет.
  3. select и таймаутыВы ждёте сразу несколько событий и не ждёте бесконечно.
  4. Общие данные и sync.MutexВы защищаете общие данные от одновременной записи.
  5. Пул обработчиков и конвейерВы раздаёте работу нескольким горутинам и собираете результаты.

Проект: Обработка заказов. Пул из нескольких горутин обрабатывает очередь заказов, собирает итоги и укладывается в отведённое время.

В итоге: пишете конкурентные программы на горутинах и каналах — то, ради чего обычно и выбирают Go.

Цена

За что вы платите

  • 30 уроков в 7 модулях. Текст, живые примеры и свободное окно для экспериментов в каждом.
  • 157 задач. С тестами, подсказками и разбором после решения.
  • 7 проектов. Чек такси, календарь месяца, показания счётчиков, частотный словарь, библиотека, рассылка уведомлений и обработка заказов.
  • Тренажёр в браузере. Программы выполняет учебный исполнитель Go прямо во вкладке, настраивать и устанавливать нечего.
  • Без расписания. Нет ни групп, ни сроков сдачи. Прогресс привязан к аккаунту, доступ не заканчивается.
Для кого

Кому этот курс подойдёт

Ни разу не писали код

Начинаем с короткой программы и объясняем в ней каждую строку. Новые слова разбираем в тот момент, когда они понадобились. Из математики нужны четыре действия и проценты.

Пишете на другом языке

Python или JavaScript уже знакомы? Здесь то же самое выглядит строже: типы указывают явно, а ошибки ловит компилятор до запуска. Азы объясняются заново, так что можно листать быстро.

Присматриваетесь к серверной разработке

Go часто выбирают для серверных программ. Сами веб-серверы в курс не входят: вы выучите язык и приёмы, на которых они строятся, — ошибки, интерфейсы, горутины и каналы.

Границы курса

Чего здесь не будет

Шесть вещей, о которых честнее сказать до покупки.

  • Установки на компьютер. Всё проходит на сайте. Как поставить Go и редактор кода, курс не рассказывает.
  • Сети, файлов и веб-серверов. Тренажёр выполняет программы внутри вкладки: сети и файлов в нём нет, сторонние пакеты не подключаются. Эти темы остаются за рамками курса.
  • Обобщённых типов и многопакетных проектов. Их нет в программе курса, а на такой код тренажёр отвечает понятной ошибкой.
  • Настоящего компилятора Go. Исполнитель у нас собственный. Вывод программ и тексты ошибок мы сверяли с настоящим Go на тестовых программах, но в мелочах он может отличаться. Горутины в нём идут по очереди, поэтому гонку данных там не увидеть — урок про мьютексы говорит об этом прямо.
  • Обещаний про работу. После курса вы пишете свои программы. До вакансии разработчика — ещё несколько тем, и гарантий трудоустройства мы не даём.
  • Наставника. Решения проверяют тесты, а не человек. Поддержка поможет с оплатой, доступом и работой сайта, но код разбирать не будет.
Вопросы

Что спрашивают перед покупкой

Это настоящий Go или учебная копия?

Язык тот же, но программы выполняет не компилятор Go, а собственный исполнитель Котодаты: он разбирает код, проверяет типы и печатает ошибки в том виде, в каком их пишет Go. Курс следует Go 1.22. Сетевых возможностей, файлов и сторонних пакетов в исполнителе нет — в программе курса они не нужны.

Go подходит как первый язык?

Курс рассчитан на тех, кто начинает с нуля: язык небольшой, а строгий компилятор показывает ошибки сразу, ещё до запуска. Если хочется более мягкого входа, у нас есть курс по Python.

Что нужно знать заранее?

Ничего. Первая программа — несколько строк, первая задача — угадать, что она напечатает. Из математики нужны четыре действия и проценты.

Сколько это займёт?

Около 20 часов: от получаса до сорока пяти минут на урок. Если заниматься по часу в будний день, выйдет примерно месяц. Торопить вас никто не будет.

Что будет после этого курса?

Вы сможете читать и писать небольшие программы на Go. Следующий шаг — веб-серверы, работа с базами данных и сетью. Эти темы в курс не входят, вакансию он не гарантирует.

Что останется у меня после курса?

Код ваших программ — его можно скопировать и сохранить у себя — и умение писать такие же. Это консольные программы: они общаются текстом, без окон и кнопок. Сертификата и документа об образовании курс не даёт.

А если я застряну на задаче?

У каждой задачи две-четыре подсказки, от общей к конкретной, а после них открывается одно из решений. Застрять намертво не получится — но решение, найденное самим, запоминается лучше.

Можно учиться с телефона?

Читать и решать короткие задачи — да. Проекты удобнее писать на компьютере: в них десятки строк.

Запустите первую программу на Go

Откройте первый урок: через полчаса вы будете знать, как Go печатает, считает и сообщает об ошибках компиляции. Дальше — ещё 29 уроков и 7 проектов за 1 990 ₽.

Go с нуля · 1 990 ₽Один платёж · без подписки
Начать

Кабинет