Уроки программирования на Go
Освойте программирование на Go с помощью наших пошаговых уроков, от основ до продвинутых практик с инструментами.
📚 Базовые знания
Изучите основы языка Go: синтаксис, типы данных, функции и ключевые концепции.
Начало работы с Go
Изучите основы программирования на Go, установку и вашу первую программу.
Начать урокПакеты и Модули в GO
Разбор двух ключевых концепций языка Go — packages и modules. В этом уроке мы изучим, как организуется код внутри проекта, что такое модуль, как управлять зависимостями и как правильно структурировать Go-приложение.
Начать урокCLI‑инструмент Go
Инструменты командной строки. Короткое и практичное введение в утилиту go и самые нужные команды: build, run, test, fmt, mod, mod tidy и проверка гонок через -race.
Начать урокПеременные и типы данных
Изучите систему типов Go, переменные, константы и базовые типы данных.
Начать урокСтроки и руны в Go
В этом уроке мы разберём, как Go работает со строками, рунами и UTF-8. Что такое rune, почему строки хранятся как байты, и как правильно итерировать символы. Разберём разницу между обычными строками, байтами и raw literals.
Начать урокПеременные в Go
В этом уроке мы изучаем, что такое переменные в Go, способы их объявления, значения по умолчанию, идиому “comma, ok”, правила именования и работу с константами.
Начать урокБазовые функции в Go
Урок посвящён базовым функциям в Go: что это такое, как они создаются, как принимают параметры, возвращают несколько значений, что такое аргументы и параметры, как игнорировать результаты и как правильно называть функции.
Начать урокOperators в Go
Урок объясняет работу арифметических, реляционных и логических операторов в Go. Научимся выполнять вычисления, сравнения, комбинировать условия и использовать сокращённые формы присваивания.
Начать урокУсловные операторы в Go
Урок объясняет работу условных операторов if..else в Go: создание условий, цепочки else if, использование логических операторов, инициализацию в условии и приём раннего выхода (early return).
Начать урокSwitch в Go
Урок объясняет работу оператора switch в Go: базовый синтаксис, сравнение значений, проверку нескольких вариантов, выражения в case и использование fallthrough.
Начать урокЦиклы в Go
Урок объясняет работу циклов в Go: базовый for, поведение как while, бесконечные циклы, использование break и continue. Разбираем, как правильно управлять потоком выполнения и избегать ошибок.
Начать урокСтруктуры в Go
Урок объясняет, что такое структуры в Go, как определять собственные типы, создавать экземпляры, работать с полями и использовать анонимные структуры.
Начать урокМассивы в Go
Урок объясняет, что такое массивы в Go, как они создаются, инициализируются, как получать и изменять элементы, как выполнять итерации и что произойдёт при выходе за границы массива.
Начать урокСрезы (Slices) в Go
Урок объясняет, что такое срезы в Go, как они связаны с массивами, как создавать срезы, выполнять операции slicing, расширять данные через append, предвыделять память с помощью make и работать с многомерными срезами.
Начать урокХеш-таблицы (Maps) в Go
Урок объясняет, как работает тип map в Go как полноценная хеш-таблица: хранение данных в формате ключ–значение, хеширование, доступ за O(1), добавление, удаление, проверка существования и особенности итерации.
Начать урокУказатели в Go
Урок объясняет, что такое указатели в Go, как они позволяют работать с адресами в памяти, разыменовывать значения, изменять внешние переменные и оптимизировать передачу данных в функции.
Начать урокФункции-получатели (Receiver-functions) в Go
Урок объясняет, что такое функции-получатели в Go, как работают value и pointer receivers, чем они отличаются, как receivers позволяют использовать точечную нотацию и улучшать API структур.
Начать урокiota в Go
Урок объясняет работу специального идентификатора iota в Go, его роль в создании перечислений, автоматической генерации последовательных значений, пропуске элементов и построении удобных enum-паттернов.
Начать урокФорматирование текста с fmt в Go
Урок объясняет работу пакета fmt в Go: форматированный вывод с Printf, создание строк через Sprintf, вывод в потоки через Fprintf, использование форматных вербов и escape-последовательностей.
Начать урокФункция init() в Go
Урок объясняет, как работает функция init() в Go, зачем она нужна, когда вызывается, как используется для подготовки программы и инициализации глобальных ресурсов.
Начать урокТестирование в Go
Урок рассказывает о том, как работает тестирование в Go: структура тестовых файлов, основы использования пакета testing, написание простых и табличных тестов, а также ключевые функции для проверки результатов и регистрации ошибок.
Начать урокИнтерфейсы в Go
Урок объясняет, что такое интерфейсы в Go, как они позволяют описывать поведение вместо типов, как работает неявная реализация, чем отличаются value и pointer receivers, и как использовать type assertion для получения реального типа.
Начать урокОбработка ошибок в Go
Урок объясняет, как устроена обработка ошибок в Go: возврат ошибок как последнего значения, создание простых ошибок через errors.New, реализация кастомных ошибок, использование errors.Is и errors.As, а также принципы корректного проектирования ошибок.
Начать урокReaders и Writers в Go
Урок объясняет, как работают интерфейсы io.Reader и io.Writer в Go, как читать и записывать данные блоками, зачем нужны буферизированные обёртки из bufio, и как использовать bufio.Scanner для удобной обработки текстового ввода.
Начать урокВстраивание типов (Type Embedding) в Go
Урок раскрывает концепцию встраивания типов в Go: объединение интерфейсов, продвижение полей и методов структур, переопределение поведения и отличие embedding от наследования. Даётся полный разбор всех ключевых примеров и моделей композиции.
Начать урокGenerics в Go
Урок объясняет, как работают generics в Go: синтаксис параметров типа, ограничения (constraints), приближённые типы, встроенные ограничения, создание собственных constraints и использование generics в структурах.
Начать урокАнонимные-функции и замыкания в Go
Урок объясняет работу function literals в Go: анонимные функции, передача функции как аргумента, замыкания, захват внешних переменных и использование type alias для сигнатур функций.
Начать урокКлючевое слово defer в Go
Урок объясняет механизм defer в Go: порядок выполнения, стек отложенных вызовов, практическое применение при работе с файлами, а также принципы использования для освобождения ресурсов и финализации операций.
Начать урокКонкурентное программирование в Go
Урок объясняет базовые принципы конкурентности в Go: разницу между потоками и асинхронностью, недетерминированность выполнения, распределение задач между ядрами процессора и то, как Go автоматически управляет конкурентным кодом.
Начать урокГорутины (Goroutines) в Go
Урок объясняет принципы работы горутин: конкурентный запуск функций, особенности выполнения, примеры с замыканиями, разделяемые переменные и ключевые свойства конкурентности в Go.
Начать урокКаналы (Channels) в Go
Урок объясняет, что такое каналы в Go, как передавать данные между горутинами, различия между буферизированными и небуферизированными каналами, работу с select, таймауты и создание однонаправленных каналов.
Начать урокСинхронизация в Go: Mutex и WaitGroup
Урок объясняет механизмы синхронизации в Go: работу мьютексов для защиты общих данных, роль defer в безопасной разблокировке, а также использование wait groups для ожидания завершения множества горутин.
Начать урокПаттерны конкурентности в Go
Урок раскрывает ключевые паттерны конкурентности в Go: построение конвейеров (pipelines), объединение потоков данных (fan-in), корректное закрытие каналов, механизмы отмены через quit и context, а также использование генераторов для ленивой обработки данных.
Начать урок🚀 Продвинутые практики с инструментами
Изучите интеграцию Go с популярными инструментами: PostgreSQL, Redis, Kafka, RabbitMQ и др.
📋 Рекомендуемый путь обучения
Следуйте этому структурированному пути для полного освоения Go от основ до профессиональной разработки:
🎯 Этап 1: Базовые знания
Начало работы с Go
Переменные и типы данных
Управляющие конструкции
Функции и методы
Структуры и интерфейсы
Параллелизм с горутинами
🚀 Этап 2: Продвинутые практики
Docker и контейнеризация
Работа с PostgreSQL
Интеграция с Redis
RabbitMQ и очереди сообщений
Работа с Apache Kafka
Микросервисы с gRPC
💡 Совет: Завершите все уроки из раздела “Базовые знания” прежде чем переходить к “Продвинутым практикам”. Это обеспечит прочную основу для работы с внешними инструментами и технологиями.