Так и есть, и сделано это нарочно. Вы сразу читаете сообщения компилятора, а тренажёр объясняет каждое по-русски и показывает строку, с которой искать причину. На маленьких программах к строгости привыкаешь быстро.
Go с нуля
Простой и строгий язык для серверов и сервисов
Начинаем с короткой программы и за 30 уроков доходим до пула горутин, который разбирает очередь заказов. Справа — не картинка: это тот же тренажёр, что в уроках. Поменяйте код и запустите.
1 990 ₽ за весь курс, один раз и навсегда. Первый урок открыт бесплатно — нужна только регистрация.
- Код запускается прямо в уроке
- 157 задач с проверкой запуском
- 7 проектов: от чека такси до обработки заказов
- Ничего не нужно устанавливать
Измените код и нажмите «Запустить»
Код выполняет тот же тренажёр, что в уроках. Он загружается по первому нажатию «Запустить» и занимает около 280 КБ.
Нажмите «Запустить» — вывод программы появится здесь.
Три черты Go, которые вы почувствуете с первых уроков
О них чаще всего спрашивают, прежде чем браться за язык, — и место в курсе, где каждая разобрана.
Ошибка в Go — обычное значение, которое функция возвращает рядом с результатом. Вы учитесь создавать её, проверять, дополнять подробностями и узнавать причину, даже если ошибка завёрнута в несколько слоёв.
Пять уроков: от слова go и ожидания задач до каналов, select, мьютексов и пула обработчиков. В конце — проект, где несколько горутин обрабатывают очередь заказов.
Четыре вещи, которые вы будете делать сами
Каждую из них проверяет проект модуля — если он сдан, значит, умеете.
Разобрать и свести данные
Прочитать текст по буквам, посчитать слова, сгруппировать записи по ключу и отсортировать их по своему правилу.
Описать предметную область
Заказ, книга, сотрудник — своими типами с методами, а разные варианты поведения — через интерфейсы.
Обработать ошибки, как принято в Go
Вернуть ошибку из функции, добавить к ней контекст и по причине решить, что делать дальше.
Запустить задачи одновременно
Раздать работу горутинам, собрать результаты по каналу, не ждать дольше нужного и защитить общие данные.
Где вы окажетесь после курса
На уровне «пишу небольшие программы на Go сам и понимаю чужой несложный код». Это основа, а не профессия: веб-серверы, базы данных, сеть, обобщённые типы и сборка проекта из нескольких пакетов в курс не входят. Вакансию он не гарантирует, и обещать её мы не станем.
7 проектов: каждый следующий умеет больше предыдущего
Первый считает стоимость поездки на такси и печатает чек. Последний запускает пул горутин, который обрабатывает очередь заказов и укладывается в отведённое время. Между ними — пять ступенек, и на каждой программа умеет чуть больше.
Образца перед глазами нет: есть описание поведения и тесты. Они запускают вашу программу на обычных данных, на пустых и на испорченных — и показывают, на чём она споткнулась.
- Модуль 1
Стоимость поездки
Программа считает цену поездки на такси по тарифу: посадка, километры, минуты ожидания — и печатает чек.
- Модуль 2
Календарь месяца
Программа печатает календарь месяца сеткой: по дням недели, с пустыми клетками до первого числа.
- Модуль 3
Разбор показаний счётчиков
Программа разбирает показания счётчика, объясняет ошибки с понятным контекстом и считает расход и сумму к оплате.
- Модуль 4
Частотный словарь
Программа разбирает текст, считает слова без учёта регистра и знаков препинания и печатает самые частые.
- Модуль 5
Библиотека
Учёт книг: выдача и возврат, поиск по автору и список должников — на структурах и методах.
- Модуль 6
Рассылка уведомлений
Письма, СМС и сообщения в мессенджер через один интерфейс — с отчётом об отправке и ошибках.
- Модуль 7
Обработка заказов
Пул из нескольких горутин обрабатывает очередь заказов, собирает итоги и укладывается в отведённое время.
Абзац — запуск — задача
Один приём за раз: объяснили, показали в работе, дали попробовать. И так до конца урока.
Сумма по срезу
Заводим счётчик перед циклом и прибавляем к нему каждый элемент. for range сам перебирает значения.
prices := []int{190, 145, 90}
total := 0
for _, price := range prices {
total += price
}
fmt.Println(total)425- 1Примеры живые
Каждый пример запускается кнопкой, а ещё его можно открыть в тренажёре и поменять под себя.
- 2Ломать можно и нужно
В уроках есть примеры, которые не скомпилируются нарочно: вы видите сообщение компилятора раньше, чем получите его сами.
- 3Ошибка — с переводом
Рядом с сообщением Go — что оно значит по-русски и с какой строки искать причину.
Верните средний чек
Функция получает срез сумм. Если чеков нет, среднего не существует — верните ошибку.
func average(sums []int) (float64, error) {
total := 0
for _, s := range sums {
total += s
}
return float64(total) / float64(len(sums)), nil
}average([]int{450, 1200, 300})650average([]int{99})99average([]int{})ждали ошибку, получили NaN- 4Тесты вызывают ваш код
Не сверяют с образцом, а запускают функцию с разными данными. Как вы её написали — ваше дело.
- 5Проверяют то, о чём забывают
Пустой срез, ноль, значение ровно на границе, испорченная строка. Через пару модулей вы начнёте думать о них заранее.
- 6Подсказки, а не ответы
Первая наводит на мысль, следующая сужает поиск. Готовое решение открывается последним.
Задачи четырёх видов: угадать вывод программы, выбрать ответ, починить чужой код, написать свой. Чужой код чинят в каждом уроке — это половина работы программиста.
7 модулей, 30 уроков
Сначала основа: значения, условия, циклы. Потом функции и ошибки, наборы данных, свои типы и интерфейсы. Последний модуль — одновременная работа задач, ради которой Go часто и выбирают. Раскройте модуль — под каждым уроком написано, что вы в нём делаете.
1Первая программа4 урока
- Первая программа: package, func main и fmtВы запускаете первую программу и разбираете, из чего она состоит.
- Переменные и типы: var, := и нулевые значенияВы заводите переменные под данные и узнаёте, почему Go не даёт оставить лишнюю.
- Числа: деление, остаток и преобразование типовВы считаете целыми и дробными числами и переводите одно в другое явно.
- Строки и форматированный вывод: PrintfВы собираете фразы из данных и печатаете ровные таблицы.
Проект: Стоимость поездки. Программа считает цену поездки на такси по тарифу: посадка, километры, минуты ожидания — и печатает чек.
В итоге: пишете программу, которая берёт данные, считает результат и аккуратно его печатает.
2Условия и циклы4 урока
- Условия: if, else и логикаВы учите программу выбирать, что делать, по условию.
- Выбор из многих: switchВы заменяете длинные цепочки if на понятный switch.
- Цикл for: три формы одного циклаВы повторяете действия заданное число раз и пока выполняется условие.
- Вложенные циклы, break и continueВы перебираете пары и таблицы и выходите из цикла вовремя.
Проект: Календарь месяца. Программа печатает календарь месяца сеткой: по дням недели, с пустыми клетками до первого числа.
В итоге: пишете программы с ветвлениями и повторениями — основу любого алгоритма.
3Функции и ошибки4 урока
- Функции: параметры и несколько результатовВы выносите расчёт в функцию и возвращаете из неё сразу два значения.
- Ошибки как значения: error и if err != nilВы сообщаете об ошибке из функции и обрабатываете её там, где вызвали.
- Функции как значения и замыканияВы передаёте функцию в функцию и делаете счётчик на замыкании.
- defer, panic и recoverВы откладываете действие до выхода из функции и разбираетесь, что такое паника.
Проект: Разбор показаний счётчиков. Программа разбирает показания счётчика, объясняет ошибки с понятным контекстом и считает расход и сумму к оплате.
В итоге: делите программу на функции и обрабатываете ошибки так, как принято в Go.
4Срезы, строки и отображения5 уроков
- Массивы и срезы: append и rangeВы храните список значений и обходите его циклом.
- Срезы изнутри: длина, ёмкость и общая памятьВы разбираетесь, почему изменение одного среза меняет другой.
- Строки, байты и руныВы правильно считаете буквы в русском тексте и разбираете строки на части.
- Отображения: mapВы считаете, группируете и ищете по ключу.
- Сортировка: sort и slicesВы сортируете числа, строки и записи по своему правилу.
Проект: Частотный словарь. Программа разбирает текст, считает слова без учёта регистра и знаков препинания и печатает самые частые.
В итоге: работаете с наборами данных: списками, словарями и текстом.
5Структуры и методы4 урока
- Структуры: свои типы данныхВы описываете товар, заказ и сотрудника своими типами.
- Указатели: &, * и nilВы меняете значение внутри функции через указатель.
- Методы: значение и указательВы добавляете типам свои действия и выбираете вид получателя.
- Встраивание и конструкторыВы собираете тип из других типов и создаёте значения через New.
Проект: Библиотека. Учёт книг: выдача и возврат, поиск по автору и список должников — на структурах и методах.
В итоге: моделируете предметную область своими типами с методами.
6Интерфейсы4 урока
- Интерфейсы: поведение вместо типаВы пишете одну функцию для разных типов, у которых есть нужные методы.
- any, проверка типа и switch по типуВы достаёте конкретное значение из интерфейса и различаете типы.
- Stringer и свои ошибкиВы учите свои типы красиво печататься и создаёте свои типы ошибок.
- Обёртки ошибок: %w, errors.Is и errors.AsВы добавляете к ошибке контекст и узнаёте её причину.
Проект: Рассылка уведомлений. Письма, СМС и сообщения в мессенджер через один интерфейс — с отчётом об отправке и ошибках.
В итоге: пишете гибкий код через интерфейсы и разбираетесь в ошибках любой глубины.
7Горутины и каналы5 уроков
- Горутины и sync.WaitGroupВы запускаете задачи одновременно и дожидаетесь, пока все закончат.
- Каналы: передача данных между горутинамиВы передаёте результаты по каналу и закрываете его, когда данных больше нет.
- select и таймаутыВы ждёте сразу несколько событий и не ждёте бесконечно.
- Общие данные и sync.MutexВы защищаете общие данные от одновременной записи.
- Пул обработчиков и конвейерВы раздаёте работу нескольким горутинам и собираете результаты.
Проект: Обработка заказов. Пул из нескольких горутин обрабатывает очередь заказов, собирает итоги и укладывается в отведённое время.
В итоге: пишете конкурентные программы на горутинах и каналах — то, ради чего обычно и выбирают 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 ₽.