Уроки программирования на Go

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

📚 Базовые знания

Изучите основы языка Go: синтаксис, типы данных, функции и ключевые концепции.

Начинающий15 мин

Начало работы с Go

Изучите основы программирования на Go, установку и вашу первую программу.

Начать урок
Начинающий8 min

Пакеты и Модули в GO

Разбор двух ключевых концепций языка Go — packages и modules. В этом уроке мы изучим, как организуется код внутри проекта, что такое модуль, как управлять зависимостями и как правильно структурировать Go-приложение.

Начать урок
Начинающий5 мин

CLI‑инструмент Go

Инструменты командной строки. Короткое и практичное введение в утилиту go и самые нужные команды: build, run, test, fmt, mod, mod tidy и проверка гонок через -race.

Начать урок
Начинающий45 мин

Переменные и типы данных

Изучите систему типов Go, переменные, константы и базовые типы данных.

Начать урок
Начинающий10 min

Строки и руны в Go

В этом уроке мы разберём, как Go работает со строками, рунами и UTF-8. Что такое rune, почему строки хранятся как байты, и как правильно итерировать символы. Разберём разницу между обычными строками, байтами и raw literals.

Начать урок
Начинающий7 min

Переменные в Go

В этом уроке мы изучаем, что такое переменные в Go, способы их объявления, значения по умолчанию, идиому “comma, ok”, правила именования и работу с константами.

Начать урок
Начинающий8 min

Базовые функции в Go

Урок посвящён базовым функциям в Go: что это такое, как они создаются, как принимают параметры, возвращают несколько значений, что такое аргументы и параметры, как игнорировать результаты и как правильно называть функции.

Начать урок
Начинающий6 min

Operators в Go

Урок объясняет работу арифметических, реляционных и логических операторов в Go. Научимся выполнять вычисления, сравнения, комбинировать условия и использовать сокращённые формы присваивания.

Начать урок
Начинающий8 min

Условные операторы в Go

Урок объясняет работу условных операторов if..else в Go: создание условий, цепочки else if, использование логических операторов, инициализацию в условии и приём раннего выхода (early return).

Начать урок
Начинающий7 min

Switch в Go

Урок объясняет работу оператора switch в Go: базовый синтаксис, сравнение значений, проверку нескольких вариантов, выражения в case и использование fallthrough.

Начать урок
Начинающий7 min

Циклы в Go

Урок объясняет работу циклов в Go: базовый for, поведение как while, бесконечные циклы, использование break и continue. Разбираем, как правильно управлять потоком выполнения и избегать ошибок.

Начать урок
Начинающий9 min

Структуры в Go

Урок объясняет, что такое структуры в Go, как определять собственные типы, создавать экземпляры, работать с полями и использовать анонимные структуры.

Начать урок
Начинающий8 min

Массивы в Go

Урок объясняет, что такое массивы в Go, как они создаются, инициализируются, как получать и изменять элементы, как выполнять итерации и что произойдёт при выходе за границы массива.

Начать урок
Начинающий10 min

Срезы (Slices) в Go

Урок объясняет, что такое срезы в Go, как они связаны с массивами, как создавать срезы, выполнять операции slicing, расширять данные через append, предвыделять память с помощью make и работать с многомерными срезами.

Начать урок
Начинающий10 min

Хеш-таблицы (Maps) в Go

Урок объясняет, как работает тип map в Go как полноценная хеш-таблица: хранение данных в формате ключ–значение, хеширование, доступ за O(1), добавление, удаление, проверка существования и особенности итерации.

Начать урок
Начинающий10 min

Указатели в Go

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

Начать урок
Начинающий10 min

Функции-получатели (Receiver-functions) в Go

Урок объясняет, что такое функции-получатели в Go, как работают value и pointer receivers, чем они отличаются, как receivers позволяют использовать точечную нотацию и улучшать API структур.

Начать урок
Начинающий8 min

iota в Go

Урок объясняет работу специального идентификатора iota в Go, его роль в создании перечислений, автоматической генерации последовательных значений, пропуске элементов и построении удобных enum-паттернов.

Начать урок
Начинающий10 min

Форматирование текста с fmt в Go

Урок объясняет работу пакета fmt в Go: форматированный вывод с Printf, создание строк через Sprintf, вывод в потоки через Fprintf, использование форматных вербов и escape-последовательностей.

Начать урок
Начинающий7 min

Функция init() в Go

Урок объясняет, как работает функция init() в Go, зачем она нужна, когда вызывается, как используется для подготовки программы и инициализации глобальных ресурсов.

Начать урок
Начинающий12 min

Тестирование в Go

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

Начать урок
Начинающий12 min

Интерфейсы в Go

Урок объясняет, что такое интерфейсы в Go, как они позволяют описывать поведение вместо типов, как работает неявная реализация, чем отличаются value и pointer receivers, и как использовать type assertion для получения реального типа.

Начать урок
Начинающий12 min

Обработка ошибок в Go

Урок объясняет, как устроена обработка ошибок в Go: возврат ошибок как последнего значения, создание простых ошибок через errors.New, реализация кастомных ошибок, использование errors.Is и errors.As, а также принципы корректного проектирования ошибок.

Начать урок
Начинающий12 min

Readers и Writers в Go

Урок объясняет, как работают интерфейсы io.Reader и io.Writer в Go, как читать и записывать данные блоками, зачем нужны буферизированные обёртки из bufio, и как использовать bufio.Scanner для удобной обработки текстового ввода.

Начать урок
Начинающий25 min

Встраивание типов (Type Embedding) в Go

Урок раскрывает концепцию встраивания типов в Go: объединение интерфейсов, продвижение полей и методов структур, переопределение поведения и отличие embedding от наследования. Даётся полный разбор всех ключевых примеров и моделей композиции.

Начать урок
Начинающий12 min

Generics в Go

Урок объясняет, как работают generics в Go: синтаксис параметров типа, ограничения (constraints), приближённые типы, встроенные ограничения, создание собственных constraints и использование generics в структурах.

Начать урок
Начинающий10 min

Анонимные-функции и замыкания в Go

Урок объясняет работу function literals в Go: анонимные функции, передача функции как аргумента, замыкания, захват внешних переменных и использование type alias для сигнатур функций.

Начать урок
Начинающий8 min

Ключевое слово defer в Go

Урок объясняет механизм defer в Go: порядок выполнения, стек отложенных вызовов, практическое применение при работе с файлами, а также принципы использования для освобождения ресурсов и финализации операций.

Начать урок
Начинающий12 min

Конкурентное программирование в Go

Урок объясняет базовые принципы конкурентности в Go: разницу между потоками и асинхронностью, недетерминированность выполнения, распределение задач между ядрами процессора и то, как Go автоматически управляет конкурентным кодом.

Начать урок
Начинающий10 min

Горутины (Goroutines) в Go

Урок объясняет принципы работы горутин: конкурентный запуск функций, особенности выполнения, примеры с замыканиями, разделяемые переменные и ключевые свойства конкурентности в Go.

Начать урок
Начинающий12 min

Каналы (Channels) в Go

Урок объясняет, что такое каналы в Go, как передавать данные между горутинами, различия между буферизированными и небуферизированными каналами, работу с select, таймауты и создание однонаправленных каналов.

Начать урок
Начинающий12 min

Синхронизация в Go: Mutex и WaitGroup

Урок объясняет механизмы синхронизации в Go: работу мьютексов для защиты общих данных, роль defer в безопасной разблокировке, а также использование wait groups для ожидания завершения множества горутин.

Начать урок
Начинающий14 min

Паттерны конкурентности в Go

Урок раскрывает ключевые паттерны конкурентности в Go: построение конвейеров (pipelines), объединение потоков данных (fan-in), корректное закрытие каналов, механизмы отмены через quit и context, а также использование генераторов для ленивой обработки данных.

Начать урок

🚀 Продвинутые практики с инструментами

Изучите интеграцию Go с популярными инструментами: PostgreSQL, Redis, Kafka, RabbitMQ и др.

📋 Рекомендуемый путь обучения

Следуйте этому структурированному пути для полного освоения Go от основ до профессиональной разработки:

🎯 Этап 1: Базовые знания

1

Начало работы с Go

2

Переменные и типы данных

3

Управляющие конструкции

4

Функции и методы

5

Структуры и интерфейсы

6

Параллелизм с горутинами

🚀 Этап 2: Продвинутые практики

1

Docker и контейнеризация

2

Работа с PostgreSQL

3

Интеграция с Redis

4

RabbitMQ и очереди сообщений

5

Работа с Apache Kafka

6

Микросервисы с gRPC

💡 Совет: Завершите все уроки из раздела “Базовые знания” прежде чем переходить к “Продвинутым практикам”. Это обеспечит прочную основу для работы с внешними инструментами и технологиями.