language

level

3

Go

Go was built at Google for fast, reliable services. The language is small, strict, and good at doing many things at once.

monthly pay

junior 140 000 ₽ · mid 250 000 ₽ · senior 400 000 ₽

Go is for services that must answer many people, not one window on a laptop.

20 blocks · 162 lessons

You can add a profession to this language as a pair for 2099 ₽. Pick a profession

progress

0%

block 1

Первые шаги

Устройство программы на Go, вывод текста и чисел, арифметика, переменные и типы, константы, сравнения и простое if/else.

  1. 1Первая программа на Go
  2. 2Несколько строк, текст и числа1399 ₽
  3. 3Несколько значений через запятую1399 ₽
  4. 4Арифметика: калькулятор в Go1399 ₽
  5. 5Переменные и знак :=1399 ₽
  6. 6var и явные типы1399 ₽
  7. 7Имена переменных и строгий компилятор1399 ₽
  8. 8Константы const1399 ₽
  9. 9Сравнения и тип bool1399 ₽
  10. 10Решение с if и else1399 ₽
  11. Проверка блока1399 ₽

block 2

Числа и типы

Типы int и float64, целочисленное деление и остаток, явные преобразования типов, пакет math, сокращённые операции, fmt.Printf и округление денег.

course
  1. 1Целые и дробные: int и float641399 ₽
  2. 2Целочисленное деление и остаток %1399 ₽
  3. 3Деление дробных чисел1399 ₽
  4. 4Явные преобразования: float64(x) и int(x)1399 ₽
  5. 5Пакет math: корни, степени, округление1399 ₽
  6. 6Сокращённые операции: +=, -= и ++1399 ₽
  7. 7Форматированный вывод fmt.Printf1399 ₽
  8. 8Деньги и округление до копеек1399 ₽
  9. Проверка блока1399 ₽

block 3

Строки

Склеивание строк, байты и руны в len, []rune и utf8, индексы, функции пакета strings, fmt.Sprintf и неизменяемость строк.

course
  1. 1Строки и склеивание через +1399 ₽
  2. 2len считает байты, а не буквы1399 ₽
  3. 3Руны: []rune и utf8.RuneCountInString1399 ₽
  4. 4Индекс строки даёт байт1399 ₽
  5. 5Регистр и поиск: пакет strings1399 ₽
  6. 6Замена и очистка текста1399 ₽
  7. 7Сборка строк: fmt.Sprintf и strings.Repeat1399 ₽
  8. 8Строки нельзя изменить1399 ₽
  9. Проверка блока1399 ₽

block 4

Условия

Цепочки else if, логические && || !, if с короткой инициализацией, switch по значению и без выражения, fallthrough и вложенные условия.

course
  1. 1Цепочка else if1399 ₽
  2. 2Логические && и ||1399 ₽
  3. 3Отрицание ! и логические переменные1399 ₽
  4. 4if с короткой инициализацией1399 ₽
  5. 5switch по значению1399 ₽
  6. 6Несколько значений в одном case1399 ₽
  7. 7switch без выражения1399 ₽
  8. 8Вложенные условия1399 ₽
  9. Проверка блока1399 ₽

block 5

Цикл for как while

Цикл for с условием, счётчики и накопители, бесконечный for с break, continue, поиск первого подходящего, защита от зацикливания и разбор числа на цифры.

course
  1. 1Один цикл for на все случаи1399 ₽
  2. 2Счётчик шагов цикла1399 ₽
  3. 3Накопитель: сумма в цикле1399 ₽
  4. 4Пока цель не достигнута1399 ₽
  5. 5Бесконечный for и break1399 ₽
  6. 6Пропуск шага: continue1399 ₽
  7. 7Поиск первого подходящего1399 ₽
  8. 8Разбираем число на цифры1399 ₽
  9. Проверка блока1399 ₽

block 6

Цикл со счётчиком

Цикл for со счётчиком, шаг и обратный отсчёт, суммы и произведения, вложенные циклы, перебор делителей, поиск лучшего значения, break и continue, проход по строке байтами и рунами.

course
  1. 1Цикл for со счётчиком1399 ₽
  2. 2Шаг и обратный отсчёт1399 ₽
  3. 3Сумма и произведение в цикле1399 ₽
  4. 4Цикл внутри цикла1399 ₽
  5. 5Перебор делителей1399 ₽
  6. 6Лучшее значение перебором1399 ₽
  7. 7break и continue со счётчиком1399 ₽
  8. 8Строка по байтам и по рунам1399 ₽
  9. Проверка блока1399 ₽

block 7

Массивы и срезы

Массивы фиксированной длины, срезы и их литералы, len, индексы и изменение элементов, append, перебор for range, сумма, среднее и максимум, подсрезы s[a:b] и вместимость cap.

course
  1. 1Массив фиксированной длины1399 ₽
  2. 2Срез: список переменной длины1399 ₽
  3. 3Изменить элемент по индексу1399 ₽
  4. 4Добавить в конец: append1399 ₽
  5. 5Перебор среза: for range1399 ₽
  6. 6Сумма, среднее и максимум1399 ₽
  7. 7Часть среза: s[a:b]1399 ₽
  8. 8Длина и вместимость: make и cap1399 ₽
  9. Проверка блока1399 ₽

block 8

Работа со срезами

Общий массив под срезами и копирование через copy, удаление и вставка элементов через append и slices.Delete/Insert, сортировка пакетами sort и slices, поиск и максимум через пакет slices, двумерные срезы и фильтрация в новый срез.

course
  1. 1Два среза — одни данные1399 ₽
  2. 2Копирование: copy1399 ₽
  3. 3Удалить элемент по индексу1399 ₽
  4. 4Вставить в середину1399 ₽
  5. 5Сортировка: пакеты sort и slices1399 ₽
  6. 6Поиск и максимум: пакет slices1399 ₽
  7. 7Двумерные срезы1399 ₽
  8. 8Фильтрация в новый срез1399 ₽
  9. Проверка блока1399 ₽

block 9

Функции

Свои функции с параметрами и результатом, несколько и именованные результаты, вариативные параметры и передача среза через ..., функции как значения, рекурсия и область видимости переменных.

course
  1. 1Своя функция: func1399 ₽
  2. 2Параметры и результат1399 ₽
  3. 3Несколько результатов1399 ₽
  4. 4Именованные результаты1399 ₽
  5. 5Вариативные функции1399 ₽
  6. 6Функция в переменной и в аргументе1399 ₽
  7. 7Рекурсия1399 ₽
  8. 8Область видимости1399 ₽
  9. Проверка блока1399 ₽

block 10

Разбор текста

strings.Split, Fields и Join, проверки HasPrefix и HasSuffix, очистка TrimSpace и Trim, перевод между строками и числами через strconv с проверкой ошибки, разбор строк CSV, сборка текста в strings.Builder и проверка символов пакетом unicode.

course
  1. 1Разрезать строку: Split и Fields1399 ₽
  2. 2Склеить строки: Join1399 ₽
  3. 3Начало, конец и лишние пробелы1399 ₽
  4. 4Строка в число: Atoi и ошибка1399 ₽
  5. 5Дробные числа и обратно: strconv1399 ₽
  6. 6Разбор строки CSV1399 ₽
  7. 7Сборка текста: strings.Builder1399 ₽
  8. 8Проверка ввода: unicode1399 ₽
  9. Проверка блока1399 ₽

block 11

Map

Словари map: литерал и make, чтение и запись, нулевое значение и v, ok, delete и len, обход range с сортировкой ключей, подсчёт частот, группировка и множества.

course
  1. 1Map: значение по ключу1399 ₽
  2. 2make и запись в map1399 ₽
  3. 3Нулевое значение и v, ok1399 ₽
  4. 4delete и len1399 ₽
  5. 5range по map и порядок ключей1399 ₽
  6. 6Частоты слов1399 ₽
  7. 7Map срезов: группировка1399 ₽
  8. 8Множество на map[string]bool1399 ₽
  9. Проверка блока1399 ₽

block 12

Структуры и указатели

Свои типы struct: литералы с именами полей, доступ к полям, срезы и вложенные структуры, указатели & и *, передача по значению и по указателю, конструкторы NewX и сортировка sort.Slice.

course
  1. 1Тип struct1399 ₽
  2. 2Поля: нулевые значения и запись1399 ₽
  3. 3Срез структур1399 ₽
  4. 4Вложенные структуры1399 ₽
  5. 5Указатели: & и *1399 ₽
  6. 6По значению и по указателю1399 ₽
  7. 7Конструктор NewX1399 ₽
  8. 8Сортировка структур sort.Slice1399 ₽
  9. Проверка блока1399 ₽

block 13

Ошибки

Ошибки в Go: тип error и errors.New, пара (значение, error) и if err != nil, ошибки-переменные, обёртки fmt.Errorf с %w и errors.Is, defer, panic и recover.

course
  1. 1Тип error и errors.New1399 ₽
  2. 2Пара (значение, error)1399 ₽
  3. 3Ошибка не останавливает программу1399 ₽
  4. 4Ошибки-переменные ErrX1399 ₽
  5. 5fmt.Errorf, %w и errors.Is1399 ₽
  6. 6defer: отложенный вызов1399 ₽
  7. 7panic и recover1399 ₽
  8. 8Паника или ошибка1399 ₽
  9. Проверка блока1399 ₽

block 14

Методы и интерфейсы

Методы с получателем-значением и получателем-указателем, интерфейсы и их неявная реализация, срезы интерфейсов, fmt.Stringer, пустой интерфейс any, type switch и свои типы ошибок.

course
  1. 1Метод: функция при типе1399 ₽
  2. 2Получатель-указатель1399 ₽
  3. 3Интерфейс: набор методов1399 ₽
  4. 4Срез интерфейсов1399 ₽
  5. 5fmt.Stringer и метод String1399 ₽
  6. 6Пустой интерфейс any1399 ₽
  7. 7Type switch1399 ₽
  8. 8Свой тип ошибки1399 ₽
  9. Проверка блока1399 ₽

block 15

Стандартная библиотека

Полезные пакеты: time (Duration, даты, Add, Sub, Format, Weekday), math/rand с фиксированным зерном, encoding/json с тегами, пакеты slices и maps, strconv.Quote и FormatInt.

course
  1. 1time.Duration: отрезки времени1399 ₽
  2. 2Даты: time.Date, Add и Sub1399 ₽
  3. 3Формат даты и день недели1399 ₽
  4. 4Случайные числа с зерном1399 ₽
  5. 5JSON: Marshal и теги1399 ₽
  6. 6JSON: Unmarshal1399 ₽
  7. 7Пакеты slices и maps1399 ₽
  8. 8strconv: Quote, FormatInt, ParseInt1399 ₽
  9. Проверка блока1399 ₽

block 16

Замыкания и обобщения

Функции как значения, замыкания, функции, возвращающие функции, функции высшего порядка, обобщённые функции с [T any], ограничения ~int | ~float64 и comparable, обобщённый тип Stack[T].

course
  1. 1Функция как значение1399 ₽
  2. 2Замыкание: счётчик1399 ₽
  3. 3Функция возвращает функцию1399 ₽
  4. 4Функции высшего порядка1399 ₽
  5. 5Обобщённые функции: [T any]1399 ₽
  6. 6Ограничения: ~int | ~float641399 ₽
  7. 7comparable: поиск и подсчёт1399 ₽
  8. 8Обобщённый тип Stack[T]1399 ₽
  9. Проверка блока1399 ₽

block 17

Горутины и каналы

Горутины и go func, sync.WaitGroup, каналы без буфера и с буфером, close и range по каналу, select с time.After и default, sync.Mutex, worker pool и сбор результатов в правильном порядке.

course
  1. 1Горутина: слово go1399 ₽
  2. 2WaitGroup и результаты по индексу1399 ₽
  3. 3Канал: передать значение1399 ₽
  4. 4Буферизованный канал1399 ₽
  5. 5close и range по каналу1399 ₽
  6. 6select: ждать несколько каналов1399 ₽
  7. 7sync.Mutex: общий счётчик1399 ₽
  8. 8Worker pool: пул обработчиков1399 ₽
  9. Проверка блока1399 ₽

block 18

Проект: касса кофейни

Пишем кассу кофейни шаг за шагом: меню в map, позиция чека как структура, сумма заказа, скидки, чек с выравниванием через Printf, оплата и сдача с ошибками, смена кассира и итоги дня.

course
  1. 1Меню кофейни1399 ₽
  2. 2Позиция чека: структура Item1399 ₽
  3. 3Сумма заказа1399 ₽
  4. 4Скидки по правилам1399 ₽
  5. 5Чек с выравниванием1399 ₽
  6. 6Оплата и сдача1399 ₽
  7. 7Смена кассира1399 ₽
  8. 8Итоги дня1399 ₽
  9. Проверка блока1399 ₽

block 19

Проект: обработчик заказов

Пишем обработчик заказов интернет-магазина: заказ как структура, интерфейс способа доставки, выбор доставки и валидация с ошибками, обработка пачки заказов пулом горутин, сводка результатов и отчёт в JSON.

course
  1. 1Заказ как структура1399 ₽
  2. 2Интерфейс способа доставки1399 ₽
  3. 3Выбор доставки по коду1399 ₽
  4. 4Валидация заказа1399 ₽
  5. 5Обработка одного заказа1399 ₽
  6. 6Пачка заказов: пул горутин1399 ₽
  7. 7Сводка по результатам1399 ₽
  8. 8Отчёт в JSON1399 ₽
  9. Проверка блока1399 ₽

block 20

Итоговый проект: анализ продаж

Разбираем CSV из строки через strings.Split, чистим битые строки с ошибками strconv, считаем выручку по городам и дням с map и сортировкой, находим самые продаваемые товары и динамику, собираем отчёт и выводим его в JSON.

course
  1. 1Разбор CSV-текста1399 ₽
  2. 2Битые строки и strconv1399 ₽
  3. 3Выручка по городам1399 ₽
  4. 4Самые продаваемые товары1399 ₽
  5. 5Динамика по дням1399 ₽
  6. 6Доли городов в выручке1399 ₽
  7. 7Итоговый текстовый отчёт1399 ₽
  8. 8Сводка продаж в JSON1399 ₽
  9. Проверка блока1399 ₽