Изучайте Go (Golang)
Бесплатный интерактивный онлайн-курс по Go. Вы пишете код на Go в каждом уроке, с подсказками ИИ, когда конкурентность запутывает, и бесплатным сертификатом по завершении.
22,067+ codders записались
- Для начинающих
Помощь ИИ при написании кода
Практические интерактивные уроки
Аудио-озвучка к каждому уроку
Тесты для проверки знаний
Бесплатный сертификат о прохождении
Программа
Раздел 1
Основы
Начать разделНачатьРазвернутьСвернутьСоздайте прочную основу с основными понятиями и базовыми навыкамиВведение в Go
4 уроков423- 01Что такое Go?Задача
- 02Hello WorldЗадачаКвизАудио
- 03PrintlnЗадачаКвизАудио
- 04Комментарии в GoЗадачаКвизАудио
Переменные и базовые типы данных
10 уроков1069- 01Что такое переменнаяЗадачаКвизАудио
- 02Вывод типов с помощью `:=`ЗадачаКвизАудио
- 03Целые числа (int)ЗадачаКвизАудио
- 04Числа с плавающей точкойЗадачаКвизАудио
- 05Логический тип (Booleans)ЗадачаКвизАудио
- 06СтрокиЗадачаКвизАудио
- 07Нулевые значения (Zero Values)ЗадачаКвизАудио
- 08КонстантыЗадачаКвизАудио
- 09Правила именованияЗадачаКвизАудио
- 10Итоги: переменные и типыЗадача
Базовые операторы
7 уроков744- 01Арифметические операторыЗадачаКвизАудио
- 02Оператор деленияЗадачаКвизАудио
- 03Оператор остатка от деленияЗадачаКвизАудио
- 04Оператор присваиванияЗадачаКвизАудио
- 05Комбинированные операторы присваиванияЗадачаКвизАудио
- 06Инкремент и декрементЗадачаКвизАудио
- 07Повторение — ВычисленияЗадача
Операторы сравнения и логические операторы
7 уроков742- 01Операторы сравнения — Часть 1ЗадачаКвизАудио
- 02Операторы сравнения — Часть 2ЗадачаКвизАудио
- 03Логический оператор ANDЗадачаКвизАудио
- 04Логический оператор ORЗадачаКвизАудио
- 05Логический оператор NOTЗадачаКвизАудио
- 06Основы приоритета операторовЗадачаКвизАудио
- 07Итоги: выполнение сравненийЗадача
Основы ввода-вывода
5 уроков532- 01Форматированный выводЗадачаКвизАудио
- 02Спецификаторы форматаЗадачаКвизАудио
- 03Вывод типовЗадачаКвизАудио
- 04Базовый ввод данных пользователемЗадачаКвизАудио
- 05Итоги: ввод и выводЗадача
Управление потоком: Условные конструкции
10 уроков1069- 01Оператор `if`ЗадачаКвизАудио
- 02Ключевое слово `else`ЗадачаКвизАудио
- 03Ключевое слово `else if`ЗадачаКвизАудио
- 04Затенение переменных в `if`ЗадачаКвизАудио
- 05Инициализация переменныхЗадачаКвизАудио
- 06Оператор `switch`ЗадачаКвизАудио
- 07Switch с выражениямиЗадачаКвизАудио
- 08Switch без выраженийЗадачаКвизАудио
- 09Ключевое слово `fallthrough`ЗадачаКвизАудио
- 10Итоги — Принятие решенийЗадача
Управляющие конструкции: Циклы
7 уроков743- 01Что такое цикл `for`ЗадачаКвизАудио
- 02Цикл `for` — основыЗадачаКвизАудио
- 03Цикл `for` — только условиеЗадачаКвизАудио
- 04Ключевое слово `break`ЗадачаКвизАудио
- 05Ключевое слово `continue`ЗадачаКвизАудио
- 06Вложенные циклыЗадачаКвизАудио
- 07Итоги — повторение действийЗадача
Функции
9 уроков962- 01Понимание функцийЗадачаКвизАудио
- 02Объявление функцииЗадачаКвизАудио
- 03Вызов функцийЗадачаКвизАудио
- 04Параметры функцииЗадачаКвизАудио
- 05Возврат одного значенияЗадачаКвизАудио
- 06Возврат нескольких значенийЗадачаКвизАудио
- 07Именованные возвращаемые значенияЗадачаКвизАудио
- 08Основы области видимости функцийЗадачаКвизАудио
- 09Итоги — создание переиспользуемого кодаЗадача
Указатели
7 уроков644- 01Что такое указатель?КвизАудио
- 02Объявление переменных-указателейЗадачаКвизАудио
- 03Оператор взятия адресаЗадачаКвизАудио
- 04Разыменование указателейЗадачаКвизАудио
- 05Использование указателей в функцияхЗадачаКвизАудио
- 06Нулевые указателиЗадачаКвизАудио
- 07Итоги: Понимание указателейЗадача
Составные типы: Массивы
7 уроков650- 01Введение в массивыКвизАудио
- 02Объявление массивовЗадачаКвизАудио
- 03Инициализация массивовЗадачаКвизАудио
- 04Доступ к элементам массиваЗадачаКвизАудио
- 05Длина массива с `len`ЗадачаКвизАудио
- 06Итерация по массивамЗадачаКвизАудио
- 07Многомерные массивыЗадачаКвизАудио
Составные типы: Срезы
10 уроков965- 01Введение в срезыКвизАудио
- 02Объявление литералов срезовЗадачаКвизАудио
- 03Создание срезов с помощью `make`ЗадачаКвизАудио
- 04Длина и емкость срезаЗадачаКвизАудио
- 05Доступ к элементам срезаЗадачаКвизАудио
- 06Добавление элементовЗадачаКвизАудио
- 07Получение срезов из существующих срезов/массивовЗадачаКвизАудио
- 08Итерация по срезамЗадачаКвизАудио
- 09Копирование срезовЗадачаКвизАудио
- 10Итоги: Динамические спискиЗадача
Составные типы: Карты (Maps)
10 уроков965- 01Введение в картыКвизАудио
- 02Объявление литералов картЗадачаКвизАудио
- 03Создание карт с помощью `make`ЗадачаКвизАудио
- 04Добавление и обновление пар ключ-значениеЗадачаКвизАудио
- 05Доступ к значениям картыЗадачаКвизАудио
- 06Проверка существования ключаЗадачаКвизАудио
- 07Удаление элементов картыЗадачаКвизАудио
- 08Длина картыЗадачаКвизАудио
- 09Итерация по картамЗадачаКвизАудио
- 10Итоги: хранилище ключ-значениеЗадача
Составные типы: Структуры
8 уроков854- 01Определение пользовательских типовЗадачаКвизАудио
- 02Создание экземпляров структурЗадачаКвизАудио
- 03Доступ к полям структурЗадачаКвизАудио
- 04Указатели на структурыЗадачаКвизАудио
- 05Инициализация структурЗадачаКвизАудио
- 06Вложенные структурыЗадачаКвизАудио
- 07Анонимные структурыЗадачаКвизАудио
- 08Итоги: Пользовательские структуры данныхЗадача
Основы обработки ошибок
8 уроков858- 01Концепция ошибокЗадачаКвизАудио
- 02Интерфейс `error`ЗадачаКвизАудио
- 03Функции, возвращающие ошибкиЗадачаКвизАудио
- 04Проверка ошибокЗадачаКвизАудио
- 05Создание простых ошибокЗадачаКвизАудио
- 06Создание форматированных ошибокЗадачаКвизАудио
- 07Основы обработки ошибокЗадачаКвизАудио
- 08Итоги — решение проблемЗадача
Раздел 2
Логика и управление потоком
Начать разделНачатьРазвернутьСвернутьОсвойте продвинутое программирование на Go с акцентом на структуры данных и управление потоком. Научитесь работать со сложными массивами, коллекциями, обработкой ошибок и управлением временем.Продвинутое управление потоком выполнения
5 уроков528- 01Switch с использованием `fallthrough`ЗадачаКвиз
- 02Выход из вложенных цикловЗадачаКвиз
- 03Продолжение конкретного циклаЗадачаКвиз
- 04Оператор `goto`ЗадачаКвиз
- 05Итоги: Продвинутое управление цикламиЗадача
Структуры и методы
6 уроков439- 01Определение методов для структурЗадачаКвиз
- 02Получатели по значениюЗадачаКвиз
- 03Получатели по указателюЗадачаКвиз
- 04Выбор типа получателяКвиз
- 05Методы против функцийКвиз
- 06Итоги: поведение структурЗадача
Интерфейсы (Основы)
8 уроков757- 01Что такое интерфейс?Квиз
- 02Определение интерфейсаЗадачаКвиз
- 03Реализация интерфейсаЗадачаКвиз
- 04Использование интерфейсных типовЗадачаКвиз
- 05Пустой интерфейсЗадачаКвиз
- 06Утверждение типаЗадачаКвиз
- 07Переключатель типовЗадачаКвиз
- 08Итоги: Фигуры и поведениеЗадача
Проект: Простой список задач
Проект6 уроков1- 01Настройка проектаЗадача
- 02Добавление задачиПроект
- 03Просмотр всех задачПроект
- 04Завершение задачиПроект
- 05Удаление задачиПроект
- 06Собираем всё вместеПроект
Карты: подробный разбор
5 уроков432- 01Карты структурЗадачаКвиз
- 02Указатели как значения картЗадачаКвиз
- 03Проверка карт на nilЗадачаКвиз
- 04Сравнение картКвиз
- 05Итоги: счетчик частоты словЗадача
Идиоматичный Go: Множества
7 уроков648- 01Идиома множества в GoКвиз
- 02Создание множестваЗадачаКвиз
- 03Добавление в множествоЗадачаКвиз
- 04Проверка наличия элементаЗадачаКвиз
- 05Удаление из множестваЗадачаКвиз
- 06Итерация по множествуЗадачаКвиз
- 07Итоги — Уникальные имена пользователейЗадача
Углубленная обработка ошибок
7 уроков650- 01Пользовательские типы ошибокЗадачаКвиз
- 02Обертывание ошибок с помощью `%w`ЗадачаКвиз
- 03Распаковка с помощью `errors.Is`ЗадачаКвиз
- 04Распаковка с помощью `errors.As`ЗадачаКвиз
- 05Понимание `panic`Квиз
- 06Использование `recover`ЗадачаКвиз
- 07Итоги: Безопасное делениеЗадача
Проект: Простой учет товаров
Проект6 уроков1- 01Обзор проектаЗадача
- 02Проверка остатковПроект
- 03Добавление нового товараПроект
- 04Обновление количества товараПроект
- 05Создание отчетаПроект
- 06Объединение всех частейПроект
Пакеты и область видимости
7 уроков550- 01Что такое пакет?Квиз
- 02Экспортируемые и неэкспортируемые элементыЗадачаКвиз
- 03Создание простого пакетаЗадачаКвиз
- 04Псевдонимы пакетовЗадачаКвиз
- 05Пустой идентификатор `_`Квиз
- 06Функция `init`ЗадачаКвиз
- 07Итоги: создание утилитыЗадача
Работа со временем
8 уроков857- 01Получение текущего времениЗадачаКвиз
- 02Создание конкретного времениЗадачаКвиз
- 03Форматирование времениЗадачаКвиз
- 04Парсинг строк времениЗадачаКвиз
- 05Длительность времениЗадачаКвиз
- 06Арифметика времениЗадачаКвиз
- 07Ожидание и тикерыЗадачаКвиз
- 08Итоги — Простой таймерЗадача
Финальные испытания
3 уроков3- 01Базовый список контактовЗадача
- 02Простой валидатор чиселЗадача
- 03Сборщик уникальных элементовЗадача
Раздел 3
Объектно-ориентированное программирование
Начать разделНачатьРазвернутьСвернутьУзнайте, как организовывать код с помощью классов, объектов и повторно используемых структурОсновы ООП в Go
11 уроков1189- 01Внешние файлыЗадачаКвиз
- 02Рабочее пространство и модули GoЗадачаКвиз
- 03Пакеты и импортыЗадачаКвиз
- 04Экспортируемые и неэкспортируемые именаЗадачаКвиз
- 05Введение в ООП в GoЗадачаКвиз
- 06Структуры как классыЗадачаКвиз
- 07Определение методов структурЗадачаКвиз
- 08Получатели-указатели и получатели-значенияЗадачаКвиз
- 09Инициализация структурЗадачаКвиз
- 10Функции-конструкторыЗадачаКвиз
- 11Итоги — Простой калькуляторЗадача
Глубокое погружение в типы и структуры
7 уроков752- 01Базовые и составные типыЗадачаКвиз
- 02Определение пользовательских типовЗадачаКвиз
- 03Теги структурЗадачаКвиз
- 04Анонимные структурыЗадачаКвиз
- 05Вложенные структурыЗадачаКвиз
- 06Нулевые значения и значения по умолчаниюЗадачаКвиз
- 07Повторение — Контактная книгаЗадача
Указатели и память
6 уроков644- 01Основы указателей в GoЗадачаКвиз
- 02Указатели на структурыЗадачаКвиз
- 03Передача по значению и по ссылкеЗадачаКвиз
- 04Функция new()ЗадачаКвиз
- 05Сборка мусора в GoЗадачаКвиз
- 06Повторение: Конструктор связного спискаЗадача
Интерфейсы
9 уроков969- 01Введение в интерфейсыЗадачаКвиз
- 02Неявная реализацияЗадачаКвиз
- 03Интерфейс как контрактЗадачаКвиз
- 04Пустой интерфейс (any)ЗадачаКвиз
- 05Утверждение типаЗадачаКвиз
- 06Переключатель типовЗадачаКвиз
- 07Композиция интерфейсовЗадачаКвиз
- 08Интерфейсы Stringer и ErrorЗадачаКвиз
- 09Повторение: Калькулятор фигурЗадача
Композиция вместо наследования
7 уроков749- 01Почему в Go нет наследованияЗадачаКвиз
- 02Основы встраивания структурЗадачаКвиз
- 03Продвижение методовЗадачаКвиз
- 04Встраивание нескольких структурЗадачаКвиз
- 05Встраивание против агрегацииЗадачаКвиз
- 06Затенение встроенных методовЗадачаКвиз
- 07Итоги — Иерархия сотрудниковЗадача
Полиморфизм в Go
6 уроков643- 01Полиморфизм через интерфейсыЗадачаКвиз
- 02Утиная типизация в GoЗадачаКвиз
- 03Правила реализации интерфейсовЗадачаКвиз
- 04Полиморфные коллекцииЗадачаКвиз
- 05Внедрение зависимостейЗадачаКвиз
- 06Итоги — Обработчик платежейЗадача
Инкапсуляция
5 уроков536- 01Экспортируемые и неэкспортируемые поляЗадачаКвиз
- 02Инкапсуляция на уровне пакетовЗадачаКвиз
- 03Геттеры и сеттерыЗадачаКвиз
- 04Сокрытие информации в GoЗадачаКвиз
- 05Итоги — Записи о студентахЗадача
Обработка ошибок и ООП
7 уроков754- 01Интерфейс errorЗадачаКвиз
- 02Пользовательские типы ошибокЗадачаКвиз
- 03Обертывание ошибок (fmt.Errorf)ЗадачаКвиз
- 04Sentinel-ошибкиЗадачаКвиз
- 05errors.Is() и errors.As()ЗадачаКвиз
- 06Panic, Defer и RecoverЗадачаКвиз
- 07Итоги — Парсер файловЗадача
Конкурентность и ООП
8 уроков863- 01Основы горутинЗадачаКвиз
- 02Каналы и взаимодействиеЗадачаКвиз
- 03Буферизованные и небуферизованные каналыЗадачаКвиз
- 04Оператор selectЗадачаКвиз
- 05sync.Mutex и sync.RWMutexЗадачаКвиз
- 06sync.WaitGroupЗадачаКвиз
- 07Проектирование потокобезопасных структурЗадачаКвиз
- 08Повторение — Worker PoolЗадача
Обобщения (Generics) (Go 1.18+)
6 уроков645- 01Введение в GenericsЗадачаКвиз
- 02Параметры типовЗадачаКвиз
- 03Ограничения типовЗадачаКвиз
- 04Обобщенные структурыЗадачаКвиз
- 05Обходной путь для обобщенных методовЗадачаКвиз
- 06Итоги — Обобщенная коллекцияЗадача
Стандартная библиотека и ООП
6 уроков644- 01io.Reader и io.WriterЗадачаКвиз
- 02sort.InterfaceЗадачаКвиз
- 03Интерфейс fmt.StringerЗадачаКвиз
- 04encoding/json со структурамиЗадачаКвиз
- 05Интерфейс http.HandlerЗадачаКвиз
- 06Повторение: модели REST APIЗадача
Продвинутые концепции ООП
6 уроков655- 01Паттерн функциональных опцийЗадачаКвиз
- 02Паттерн Builder в GoЗадачаКвиз
- 03Цепочки вызовов методовЗадачаКвиз
- 04Псевдонимы и определения типовЗадачаКвиз
- 05Основы рефлексииЗадачаКвиз
- 06Обзор генерации кодаЗадачаКвиз
Паттерны проектирования. Часть 1
6 уроков651- 01Введение в паттерны проектированияЗадачаКвиз
- 02Паттерн SingletonЗадачаКвиз
- 03Паттерн FactoryЗадачаКвиз
- 04Паттерн Abstract FactoryЗадачаКвиз
- 05Паттерн ObserverЗадачаКвиз
- 06Паттерн StrategyЗадачаКвиз
Паттерны проектирования. Часть 2
7 уроков764- 01Паттерн КомандаЗадачаКвиз
- 02Паттерн АдаптерЗадачаКвиз
- 03Паттерн ДекораторЗадачаКвиз
- 04Паттерн Шаблонный методЗадачаКвиз
- 05Паттерн СостояниеЗадачаКвиз
- 06Паттерн КомпоновщикЗадачаКвиз
- 07Middleware как ДекораторЗадачаКвиз
Проект: Управление библиотекой
Проект7 уроков1- 01Обзор и структура проектаЗадача
- 02Структуры Book и UserПроект
- 03Система выдачи книгПроект
- 04Поиск через InterfacesПроект
- 05Слой хранения JSONПроект
- 06CLI-интерфейс администратораПроект
- 07Тестирование и интеграцияПроект
Финальные испытания
3 уроков3- 01Платформа онлайн-обученияЗадача
- 02Банковская системаЗадача
- 03Система игровых персонажейЗадача
Курсы GO
Практические курсы GO - бесплатный старт в браузере.
Задачи для начинающих: практика базовых концепций
ПопулярноеПроверьте свои знания основ программирования на практике и попробуйте решить эти задачи на любом языке. Удачного кодинга!
Сертификат по окончании
- 20
- 20
Задачи по программированию
ПопулярноеПроверьте свои навыки решения задач по программированию, выполняя упражнения разного уровня сложности. Этот курс предназначен для тех, кто уже знаком с базовым синтаксисом любого языка программирования.
Сертификат по окончании
- 32
- 31
Задачи по программированию: Часть 2
Проверьте свои навыки решения задач с помощью упражнений разного уровня сложности. Курс предназначен для программистов, уже знакомых с базовым синтаксисом любого языка программирования, и является продолжением первой части «Задач по программированию».
Сертификат по окончании
- 25
- 24
Стек — Серия «Структуры данных» №1
В этом курсе вы изучите структуру данных Стек, создадите её с нуля на выбранном вами языке и попрактикуетесь в решении задач!
- 13
- 6
- 1
Кучи и очереди с приоритетом — Структуры данных №7
НовоеВ этом курсе вы изучите структуру данных Куча (основу очередей с приоритетом), создадите MinHeap с нуля на выбранном вами языке и попрактикуетесь в решении задач с её использованием!
Сертификат по окончании
- 14
- 6
- 1
Буткемп по выводу фигур из звездочек
Примените свои навыки решения задач в программировании, чтобы научиться выводить фигуры из звездочек любой сложности: от простых до самых продвинутых. В процессе вы освоите работу с вложенными циклами, условными операторами и математическими вычислениями.
- 30
- 28
Почему стоит изучать Go (Golang) на Coddy
- Пишите и запускайте настоящий Go-код прямо в браузере. Никакой установки Go-тулчейна, никакой настройки GOPATH. Каждый урок компилирует вашу Go-программу на сервере и сразу показывает результат.
- Идиоматичный Go: пакеты, структуры, срезы и map, интерфейсы, обработка ошибок, goroutines, каналы. Те самые приёмы Go, которые реально пригодятся для бэкендов и CLI.
- Подсказки от AI помогают отлаживать код на Go и распутывать баги с goroutines и channels, не выдавая готового ответа, - так модель конкурентности укладывается в голове, а не запутывает ещё сильнее.
- Бесплатный сертификат по Golang после завершения курса. Весомый аргумент для позиций в backend, облачной инфраструктуре и DevOps, где владение Go всё чаще ожидается по умолчанию.