Пишите на Go.
Думайте системно.

От первой программы до конкурентного кода: небольшие шаги, понятные решения и собственные упражнения.

33 урока с практикой5 этапов ростаМожно идти в своём темпе
main.goGo
package main

import "fmt"

func main() {
    fmt.Println("Привет, Go!")
}
Результат запускаПривет, Go!

Программа выводит текст в консоль. С этого начинается практика.

Знание становится навыком в коде.

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

Написать свои программы

Собрать небольшие консольные задачи с переменными, условиями, циклами и функциями.

Проверить поведение

Обработать ошибки, написать тесты и сравнить результаты на заданных примерах.

Работать с конкурентностью

Запускать независимую работу в goroutine, передавать результаты через каналы и координировать завершение задач.

От первых строк до конкурентного кода.

Пять последовательных этапов дают опору и пространство для роста. Уроки можно проходить в удобном ритме.

Все уроки
01

Знакомство с языком

От устройства Go и первой программы до переменных, значений и базового синтаксиса.6 уроков
02

Функции и повторение

Создаём функции, принимаем решения и повторяем действия с помощью циклов.5 уроков
03

Строим модели данных

Изучаем структуры, коллекции и типы, включая константы и перечисления на основе iota.7 уроков
04

Организуем программу

Форматируем текст, работаем с пакетами, ошибками и ресурсами, которые нужно освобождать.10 уроков
19Форматирование с fmtФорматируем значения для человека, собираем строки и пишем в разные потоки.18 минут20Инициализация программыРазбираемся, когда запускается init и почему ошибки и внешние ресурсы лучше обрабатывать явно.16 минут21Проверки с go testВыносим проверки в отдельный файл и одним набором кейсов проверяем разные входные данные.22 минуты22Интерфейсы как контракты поведенияПринимаем небольшое необходимое поведение и подключаем разные типы без общей иерархии.23 минуты23Ошибки, обёртки и проверкаВозвращаем ошибки явно, добавляем контекст и проверяем их через errors.Is и errors.As.25 минут24Потоки чтения и записиЧитаем данные частями, корректно обрабатываем конец потока и используем стандартные буферы.35 мин25Встраивание типов и продвижение методовСоставляем типы из готовых компонентов и делаем интерфейсы выразительными через embedding.35 мин26Обобщённые функции и ограничения типовПишем одну функцию для нескольких типов данных и разрешаем только операции, заданные constraint.40 мин27Функциональные литералы и замыканияСоздаём функции на месте, передаём их как данные и сохраняем захваченные значения.40 мин28Отложенное выполнение с deferГарантируем очистку при выходе из функции и предсказываем порядок отложенных вызовов.25 мин
05

Выполняем задачи параллельно

Разбираемся с конкурентным выполнением и применяем шаблоны координации горутин.5 уроков

Короткая теория.
Своя практика.

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

1

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

Короткое объяснение показывает цель и знакомит с инструментом.

2

Соберите своё решение

Упражнение предлагает применить тему на знакомой задаче.

3

Проверьте результат

Понятные критерии помогают увидеть, что уже работает.

Лучший способ выучить Go: начать писать на Go.

Откройте первый урок, настройтесь на практику и двигайтесь шаг за шагом.

Перейти к урокам