Курс на Stepik
Обложка курса «Go для джунов» на Stepik
500 ₽

Go для джунов ★ 5.000

Открыть на
STEPIK.ORG

Go 1.23+ с нуля до junior: типы, функции, срезы, карты, структуры, методы, интерфейсы, указатели, ошибки, пакеты, файлы, тесты и итоговая CLI-утилита.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Go для джунов»Учеников на курсе 37
Сертификаты, выданные на курсе «Go для джунов»Сертификатов выдано 0
Отзывы о курсе «Go для джунов»Отзывов получено 2
Рейтинг курса «Go для джунов»Рейтинг курса 5.000
Уроки в курсе «Go для джунов»Количество уроков 128
Тесты в курсе «Go для джунов»Количество квизов 619
Время прохождения курса «Go для джунов»Время прохождения курса —
Стоимость курса «Go для джунов»Стоимость курса 500 ₽ —
Обновления курса «Go для джунов»Обновления курса — —
Дата публикации курса «Go для джунов»Дата публикации курса — ———
Последнее обновление курса «Go для джунов»Последнее обновление — ———
Сложность easy — ———

Содержание курса

Разделы в курсе «Go для джунов» 19 разделов Уроки в курсе «Go для джунов» 128 уроков Тесты в курсе «Go для джунов» 619 тестов Время прохождения курса «Go для джунов» 0 ч. Последнее обновление курса «Go для джунов» обн. 16 июля 2026

Модуль 1. Введение: почему Go и как мы будем учиться

7 уроков
1. О курсе: как проходить обучение и канал «Логово Дата-Инженера» ↗
2. Почему Go создали в Google и какую боль он лечит ↗
3. Чем Go отличается от Python, Java и C простыми словами ↗
4. Где применяют Go: от облачных сервисов до утилит командной… ↗
5. Философия языка: простота, эффективность и читаемость ↗
6. Как устроено обучение в этом курсе и что вы будете уметь в конце ↗
7. Настрой на успех: почему Go прощает новичка и не даёт… ↗

Модуль 2. Установка и первый запуск

7 уроков
1. Устанавливаем Go: официальный дистрибутив и проверка версии ↗
2. Структура простейшей программы: package main и func main ↗
3. go run: быстрый запуск без ручной компиляции ↗
4. go build: компилируем в исполняемый файл ↗
5. go fmt: автоматическое форматирование, которое спасает от споров ↗
6. go doc и go help: встроенная справка прямо в терминале ↗
7. Инструменты Go: обзор экосистемы разработчика одним взглядом ↗

Модуль 3. Базовые типы и переменные

8 уроков
1. Ключевое слово var: объявляем переменную с явным типом ↗
2. Короткое объявление := и автоматический вывод типа ↗
3. Целые числа: int, int8–int64, uint и почему размер зависит от… ↗
4. Числа с плавающей точкой: float32 и float64 ↗
5. Логический тип bool: только true и false, никаких неявных… ↗
6. Строки: неизменяемые последовательности байтов в двойных… ↗
7. Константы: неизменяемые значения времени компиляции ↗
8. Zero values: что лежит в переменной, если вы ничего не присвоили ↗

Модуль 4. Управление потоком выполнения

8 уроков
1. if и else: ветвление по условию без скобок ↗
2. if с коротким утверждением: объявляем переменную прямо в условии ↗
3. for как единственный цикл: три формы одного инструмента ↗
4. for с условием: классический while-подобный цикл ↗
5. for range: перебор коллекций и каналов ↗
6. switch/case: выбираем ветку по значению без break ↗
7. switch без выражения: альтернатива цепочке if-else ↗
8. break, continue и метки: управляем вложенными циклами ↗

Модуль 5. Функции

8 уроков
1. Объявляем функцию: func, имя, параметры и тело ↗
2. Параметры и возврат значения: тип после имени, тип после… ↗
3. Множественный возврат: функция отдаёт сразу несколько значений ↗
4. Именованные возвращаемые значения и голый return ↗
5. Variadic-функции: произвольное количество аргументов через ... ↗
6. defer: отложенное выполнение и зачем оно нужно ↗
7. Анонимные функции и функции как значения ↗
8. Замыкания: функция, которая помнит контекст своего создания ↗

Модуль 6. Массивы и срезы

8 уроков
1. Массив: фиксированная длина и одинаковый тип элементов ↗
2. Инициализация массива: литералы и значение по умолчанию ↗
3. Срез: динамическое окно в массив ↗
4. Создание среза: литерал, nil-срез и встроенная функция make ↗
5. len и cap: длина и ёмкость среза ↗
6. append: добавляем элементы и как растёт ёмкость ↗
7. copy и срезы срезов: копирование и взятие части по индексам ↗
8. for range по срезам: индекс и значение в цикле ↗

Модуль 7. Строки, руны и байты

6 уроков
1. Строка как последовательность байтов, а не символов ↗
2. Руна (rune): один символ Unicode, который может занимать… ↗
3. Перебор строки по рунам через for range ↗
4. Пакет strings: Contains, HasPrefix, Replace, Split, Join и… ↗
5. Форматирование: fmt.Sprintf, %d, %s, %v, %T и пакет strconv ↗
6. strings.Builder: эффективная конкатенация строк в цикле ↗

Модуль 8. Карты (map)

6 уроков
1. Карта как неупорядоченный словарь: ключ и значение ↗
2. Создание карты: литерал, make и nil-карта ↗
3. Чтение и запись: доступ по ключу и добавление новых пар ↗
4. Идиома comma ok: проверяем, есть ли ключ в карте ↗
5. delete и for range по карте: удаление и обход ↗
6. Карта против структуры: когда словарь, а когда тип с полями ↗

Модуль 9. Структуры (struct)

7 уроков
1. struct: определяем тип с именованными полями ↗
2. Создание экземпляра: литерал с именами полей и позиционный ↗
3. Доступ к полям через точку и обновление значений ↗
4. Вложенные структуры: одно поле — другая структура ↗
5. Анонимные поля и продвижение имён: встраивание без слова extends ↗
6. Zero value структуры и частичная инициализация ↗
7. Экспортируемые и неэкспортируемые поля: заглавная буква… ↗

Модуль 10. Методы

7 уроков
1. Метод: функция с приёмником (receiver) между func и именем ↗
2. Value receiver: метод получает копию значения ↗
3. Pointer receiver: метод получает указатель и может менять… ↗
4. Выбор receiver: когда указатель, а когда значение ↗
5. Методы на любом типе, определённом в вашем пакете ↗
6. Инкапсуляция через неэкспортируемые поля и методы доступа ↗
7. Цепочки методов и возврат указателя из метода ↗

Модуль 11. Интерфейсы — введение

7 уроков
1. Интерфейс как набор методов: что тип должен уметь делать ↗
2. Неявное удовлетворение: достаточно реализовать методы… ↗
3. Пустой интерфейс interface{} (any): любое значение, любой тип ↗
4. Type assertion: достаём конкретный тип из интерфейса ↗
5. Type switch: выбираем ветку по конкретному типу ↗
6. Интерфейс Stringer из пакета fmt: как ваш тип печатается ↗
7. Интерфейс error: простейший контракт для ошибок ↗

Модуль 12. Указатели

6 уроков
1. Оператор & и оператор *: берём адрес и разыменовываем ↗
2. nil-указатель: что будет, если разыменовать пустой адрес ↗
3. Передача по указателю в функцию: экономим копирование ↗
4. Встроенная функция new: выделяем память и возвращаем указатель ↗
5. Указатели на структуры: доступ к полям без явного разыменования ↗
6. Когда использовать указатели, а когда — значения ↗

Модуль 13. Обработка ошибок

7 уроков
1. Интерфейс error: метод Error() string ↗
2. errors.New и fmt.Errorf: создаём простую ошибку ↗
3. Sentinel errors: заранее заготовленные ошибки для сравнения ↗
4. Свои типы ошибок: структура, реализующая error ↗
5. Оборачивание ошибок: fmt.Errorf с %w сохраняет цепочку ↗
6. errors.Is и errors.As: распаковываем и сравниваем ошибки ↗
7. panic и recover: когда программа должна упасть и как это… ↗

Модуль 14. Пакеты и модули

6 уроков
1. Пакет: каждая папка — один пакет, каждые go-файл — часть пакета ↗
2. Импорт: подключаем стандартные и внешние пакеты ↗
3. internal-пакеты: код, доступный только внутри модуля ↗
4. go modules: go mod init и go.mod как центр управления проектом ↗
5. go.sum: контрольные суммы зависимостей ↗
6. go mod tidy: чистим неиспользуемые и добавляем недостающие… ↗

Модуль 15. Работа с файлами и вводом-выводом

7 уроков
1. os.Open и os.Create: открываем и создаём файлы, закрываем… ↗
2. Чтение файла: os.ReadFile и io.ReadAll ↗
3. Запись в файл: os.WriteFile и File.WriteString ↗
4. Интерфейсы io.Reader и io.Writer: читаем и пишем что угодно ↗
5. bufio: буферизованное чтение и запись для эффективности ↗
6. Пакет os: работа с файловой системой, переменными окружения и… ↗
7. path/filepath: кроссплатформенная работа с путями ↗

Модуль 16. Тестирование — введение

6 уроков
1. Пакет testing и соглашение об именах: файлы с суффиксом _test.go ↗
2. go test: запускаем тесты и читаем результаты ↗
3. Table-driven tests: одна тестовая функция проверяет много… ↗
4. Подтесты через t.Run: группируем и именуем сценарии ↗
5. t.Helper: помечаем вспомогательную функцию для красивых ошибок ↗
6. Примеры (Example-функции): тесты, которые проверяют вывод и… ↗

Модуль 17. Стандартная библиотека — первые шаги

6 уроков
1. time: текущее время, форматирование, таймеры и тикеры ↗
2. encoding/json: превращаем структуры в JSON и обратно ↗
3. net/http: делаем HTTP-запросы клиентом ↗
4. flag: разбираем аргументы командной строки ↗
5. log: простое логирование с уровнями и выводом ↗
6. sync: мьютексы и базовые примитивы синхронизации (введение) ↗

Модуль 18. Дженерики — введение

5 уроков
1. Зачем нужны дженерики: избавляемся от копипасты ↗
2. Параметры типа в квадратных скобках: func Print[T any](v T) ↗
3. Ограничения (constraints): T может быть не любым, а только… ↗
4. comparable и any: встроенные ограничения ↗
5. Дженерик-типы: обобщённый стек, кэш и другие структуры ↗

Модуль 19. Итоговый проект: консольный менеджер задач

6 уроков
1. Проект: что должен уметь наш менеджер задач ↗
2. Проектируем данные: структуры Task и Status, срез как хранилище ↗
3. Разбираем ввод пользователя: команды add, list, done, delete ↗
4. Читаем и пишем задачи в JSON-файл между запусками ↗
5. Покрываем код тестами: table-driven и примеры ↗
6. Куда двигаться дальше: анонс курса «Go для мидлов» ↗