Содержание пакета (2 курса)
1. Твой Golang 4.98
Введение
8 уроков
1.
О курсе
↗
2.
Что нужно сделать
↗
3.
Про Golang
↗
4.
Установка Golang
↗
5.
Установка редактора кода
↗
6.
Первая программа
↗
7.
Запуск и компиляция
↗
8.
Отладка
↗
Базовые типы
27 уроков
1.
Переменные
↗
2.
Названия переменных
↗
3.
Типы
↗
4.
Тип int
↗
5.
Переполнение и приведение типов int
↗
6.
Типы byte и rune
↗
7.
Выбор int
↗
8.
Система счисления
↗
9.
iota
↗
10.
Случайное целое число
↗
11.
Тип float
↗
12.
Случайное дробное число
↗
13.
Тип complex
↗
14.
Пакет math
↗
15.
Тип bool
↗
16.
Тип string
↗
17.
Пакет strings
↗
18.
Приведение в строку
↗
19.
Приведение строки в число
↗
20.
Пакет fmt
↗
21.
Спецификаторы f-функций
↗
22.
Тип rune
↗
23.
Указатели
↗
24.
nil и new
↗
25.
Ввод данных от пользователя
↗
26.
Тип any или interface{}
↗
27.
Другие типы
↗
Операторы
9 уроков
1.
Операторы и операнды
↗
2.
Математические операторы
↗
3.
Операторы присваивания
↗
4.
Конкатенация
↗
5.
Сравнение
↗
6.
Логические операторы
↗
7.
Логические "И", "ИЛИ"
↗
8.
Побитовые операторы
↗
9.
Пример побитовых операторов
↗
Ветвления
7 уроков
1.
Логические конструкции if-else
↗
2.
Логическое if с присвоением значения
↗
3.
Конструкция switch
↗
4.
Область видимости
↗
5.
Практика - Определение времени суток
↗
6.
Практика - Калькулятор ИМТ
↗
7.
Практика - Поиск по названию товара
↗
Функции
25 уроков
1.
Создание функций
↗
2.
Параметры
↗
3.
Возвращение значений
↗
4.
Именованый return
↗
5.
Применение return
↗
6.
Вариативный параметр
↗
7.
Указатели и функции
↗
8.
defer
↗
9.
Нюансы defer
↗
10.
Стек вызовов - callstack
↗
11.
Паника!!!
↗
12.
Ошибки
↗
13.
Оборачивание ошибок
↗
14.
Замыкания
↗
15.
Пользовательские типы
↗
16.
Инициализация с init
↗
17.
Рекурсия
↗
18.
Практикуемся с рекурсией - факториал
↗
19.
Стиль функций
↗
20.
Одна функция - одна задача
↗
21.
if, else и return
↗
22.
Затенение переменных
↗
23.
Имена функций
↗
24.
Практика - Система оценок
↗
25.
Практика - Декораторы
↗
Пакеты
3 урока
1.
Пакеты в golang
↗
2.
Внешние пакеты и их подключение
↗
3.
Советы по пакетам
↗
Циклы
6 уроков
1.
Цикл for
↗
2.
Итерация по строкам
↗
3.
break, continue и return
↗
4.
Вложенные циклы и лейблы
↗
5.
Практика - Игра "Угадай число"
↗
6.
Практика - Анализ текста
↗
Массивы
6 уроков
1.
Создание массивов
↗
2.
Доступ к значениям массивов
↗
3.
Итерация по массиву
↗
4.
Массивы и функции
↗
5.
Сравнение массивов
↗
6.
Практика - Секретный код
↗
Слайсы
16 уроков
1.
Создание слайсов
↗
2.
Итерация по слайсу
↗
3.
Просто про добавление значений - append()
↗
4.
Вариативные параметры функции
↗
5.
Пустой слайс - nil
↗
6.
Вложенные массивы и слайсы
↗
7.
Копирование - copy
↗
8.
Подслайсы
↗
9.
Указатель на элемент
↗
10.
Вставка значений - append()
↗
11.
Удаление значений
↗
12.
Нюансы работы со слайсами
↗
13.
Сортировка
↗
14.
Пакет slices
↗
15.
Практика - шифр Цезаря
↗
16.
Практика - Отслайси его!
↗
Структура map
12 уроков
1.
Создание map
↗
2.
Итерация по map
↗
3.
Изменение map во время итерации
↗
4.
Ключи
↗
5.
Значения
↗
6.
Скорость работы
↗
7.
Пример использования
↗
8.
Сравнение
↗
9.
Копирование и клонирование
↗
10.
Удаление значений с maps.DeleteFunc()
↗
11.
Практика - рекомендации фильмов
↗
12.
Практика - анализ друзей
↗
Структуры
15 уроков
1.
Проблема хранения данных
↗
2.
Структуры
↗
3.
Вложенные структуры
↗
4.
Передача по значению
↗
5.
Методы
↗
6.
Изменение структуры в методах
↗
7.
Экспортируемость полей и методов
↗
8.
Функция-конструктор
↗
9.
Теги
↗
10.
Композиция
↗
11.
Встраивание
↗
12.
Композиция vs встраивание
↗
13.
Пустая структура
↗
14.
Практика - система управления тегами
↗
15.
Практика - система управления проектами
↗
Интерфейсы
10 уроков
1.
Создание интерфейсов
↗
2.
Пример использования
↗
3.
Тип any или пустой интерфейс
↗
4.
nil
↗
5.
Вызов метода у nil
↗
6.
Пользовательские типы
↗
7.
Пример использования пользовательских типов
↗
8.
Сложнее пример с интерфейсами
↗
9.
Встраивание интерфейсов
↗
10.
Практика - Симуляция жизни в деревне
↗
Ошибки
9 уроков
1.
Вспоминаем про ошибки
↗
2.
Оборачивание ошибок
↗
3.
Пользовательские ошибки
↗
4.
Функции errors.Is() и errors.As()
↗
5.
Как устроены errors.Is() и errors.As()
↗
6.
Оборачивание пользовательских ошибок
↗
7.
Другой подход к работе с ошибками
↗
8.
Советы по работе с ошибками
↗
9.
Практика - Обработка ошибок платежа
↗
Конец первой части курса
2 урока
1.
Друзья курса
↗
2.
Что дальше?
↗
2. Твой Golang - Продвинутый 5.00
Слайсы
6 уроков
1.
Введение
↗
2.
Структура слайса
↗
3.
Как работает append()
↗
4.
Нюансы append()
↗
5.
Подслайсы
↗
6.
Неожиданные мутации
↗
Big O
3 урока
1.
Сложность операций: Big O
↗
2.
Как данные хранятся в памяти?
↗
3.
Практика: Угадай сложность
↗
Хеш-таблица
5 уроков
1.
Проблема поиска
↗
2.
Придумываем хеш-таблицу
↗
3.
Коллизии
↗
4.
Создаем свою хеш-таблицу
↗
5.
Заключение
↗
map
10 уроков
1.
Введение
↗
2.
Идея swiss tables
↗
3.
hash
↗
4.
Каталог и расширяемое хеширование
↗
5.
Таблицы (Swiss tables)
↗
6.
Группы
↗
7.
Поиск элемента и пробирование
↗
8.
CRUD в map
↗
9.
Нюансы map
↗
10.
Заключение
↗
Интерфейсы
4 урока
1.
Устройство интерфейсов
↗
2.
Таблицы методов (itab)
↗
3.
Интерфейсы, nil и производительность
↗
4.
Использование интерфейсов
↗
Время - time
7 уроков
1.
Основы времени
↗
2.
Арифметика времени
↗
3.
Форматирование и парсинг времени
↗
4.
Временные зоны
↗
5.
Monotonic и Wall Time
↗
6.
Таймеры и задержки
↗
7.
DST, високосные секунды и другие подводные камни
↗
Работа с файловой системой
14 уроков
1.
Введение в работу с файлами
↗
2.
Ручное управление файлом
↗
3.
Операции с *os.File
↗
4.
Пример: чтение конфигурации
↗
5.
Работа с большими файлами
↗
6.
bufio
↗
7.
Реализуем логику head
↗
8.
Пути и работа с директориями
↗
9.
Directory (Path) Traversal
↗
10.
Рекурсивный обход файловой системы
↗
11.
Права доступа, метаданные и временные файлы
↗
12.
Атомарная запись
↗
13.
Практика: реализуем tail
↗
14.
Стандартные операции над файлами
↗
JSON
11 уроков
1.
Что такое JSON
↗
2.
Основы JSON
↗
3.
omitempty и omitzero
↗
4.
MarshalJSON и UnmarshalJSON
↗
5.
Вложенные структуры, слайсы, мапы
↗
6.
Динамический JSON
↗
7.
Валидация в UnmarshalJSON
↗
8.
Streaming и работа с большими данными
↗
9.
Циклические ссылки
↗
10.
encoding/json/v2
↗
11.
stepik
↗
Конкурентность
8 уроков
1.
Горутины и GMP
↗
2.
Как устроен GMP
↗
3.
Горутины
↗
4.
Каналы
↗
5.
Нюансы каналов
↗
6.
Практика с каналами
↗
7.
select
↗
8.
Таймеры и таймауты
↗
Контекст
5 уроков
1.
Введение в контекст
↗
2.
Отмена контекста
↗
3.
Передача контекста вниз по стеку
↗
4.
Причина - context.Cause
↗
5.
Пример: длинные вычисления с проверкой контекста
↗
Сигналы
2 урока
1.
Работа с сигналами
↗
2.
Graceful shutdown
↗
Пакет sync
10 уроков
1.
Введение в пакет sync
↗
2.
sync.Mutex
↗
3.
sync.RWMutex
↗
4.
sync.WaitGroup
↗
5.
sync.Once
↗
6.
sync.Cond
↗
7.
sync.Map
↗
8.
sync.Pool
↗
9.
errgroup
↗
10.
Что выбрать?
↗
Пакет atomic
5 уроков
1.
Атомарные операции
↗
2.
Пример: Флаг отмены для воркеров
↗
3.
Атомарное обновление структуры - atomic.Pointer
↗
4.
Когда нельзя использовать атомарные операции
↗
5.
Заключение
↗
Практика и конкурентность
1 урок
1.
Graceful shutdown
↗
Паттерны конкурентности
7 уроков
1.
Pipeline
↗
2.
Worker Pool
↗
3.
Fan-Out/Fan-In
↗
4.
Resource Pool
↗
5.
Circuit Breaker
↗
6.
Rate Limiting
↗
7.
Pub/Sub
↗
CLI
7 уроков
1.
Введение в CLI-приложения
↗
2.
Цветной вывод и индикаторы прогресса
↗
3.
Стандартный пакет flag
↗
4.
Пакет pflag
↗
5.
Библиотека urfave/cli
↗
6.
Библиотека Cobra и Viper
↗
7.
Интерактивные режимы (REPL)
↗
Теория HTTP
4 урока
1.
Введение в HTTP как протокол
↗
2.
Уровни сетевого взаимодействия: OSI
↗
3.
Эволюция HTTP
↗
4.
Stateless-природа HTTP
↗
HTTP-сервер
16 уроков
1.
Основы HTTP-сервера
↗
2.
Регистрация обработчиков
↗
3.
Запуск сервера
↗
4.
Заполнение обработчиков
↗
5.
Добавляем log/slog
↗
6.
Роутер
↗
7.
Роутинг в http.ServeMux
↗
8.
Убираем глобальный логгер
↗
9.
Middleware
↗
10.
Context и цепочки middleware
↗
11.
Настройка HTTP-сервера
↗
12.
Чтение данных из HTTP-запроса
↗
13.
Раздача статических файлов
↗
14.
Загрузка файлов
↗
15.
Множественная загрузка файлов
↗
16.
Заключение
↗
HTTP-клиент
5 уроков
1.
Простые запросы HTTP
↗
2.
http.Client
↗
3.
http.Transport
↗
4.
Диагностика сетевых ошибок
↗
5.
http.Request
↗
Конец второй части курса "Твой Go"
1 урок
1.
Что дальше?
↗