Курс на 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 для мидлов»