Цели

  • сравнить его с другими языками и понять для себя, для каких задач он предпочтителен.
  • получить практику разработки в тех сферах, где язык актуален (CLI tools, API).

Задачи

  • ✅ Пройти бесплатный курс “Основы Go” от Яндекса.

  • ✅ Выписать вопросы для изучения из плана курсов Яндекса (см. ниже).

  • ✅ Делать REST API go-anvlink и изучать необходимое для этого.

    • ✅ Проработать Let’s Go Further by Alex Edwards.
    • ✅ Проработать Let’s Go by Alex Edwards.
    • ✅ Проработать 📖 Shipping Go.
    • TUI из 📖 Powerful Command-Line Applications in Go.
      • со стр.110 расписать, что сделано, и что осталось
    • Effective Go Recipes: Fast Solutions to Common Tasks
  • Изучить способы автоматической генерации документации API в Go.

  • Ознакомиться с популярными ORM.

  • Проверить по плану курсов Яндекса, какие вопросы осталось проработать.

Практика

Формат практика + необходимая под неё теория.

Ещё идеи и материалы для учебных проектов:

  • gRPC
  • Видео туториалы по разработке мини-проектов (скачаны):
    • Simple Redis Server From Scratch In Golang
    • Distributed File Storage In Go
  • Идеи проектов на Go.
  • 💡 Проекты DIY (tag:DIY, tag:Try) в Readwise.

📚 Книги

📖 Обязательно читать

  • Let’s Go Alex Edwards
  • Let’s Go Further Alex Edwards
  • 📖 Powerful Command-Line Applications in Go – подробное описание процесса создания интересных мини-проектов.
  • Shipping Go – настройка процесса CI/CD с примерами для проектов на Go.
  • Язык программирования Go (Донован, Керниган)
  • Дочитать 📖 Learning Go (Bodner) (Гл. 7-14, стр. 129-324).
  • Effective Go Recipes: Fast Solutions to Common Tasks by Miki Tebeka от PragProg – 2024 год, интересные рецепты. Скачана.
  • 100 Go Mistakes and How to Avoid Them – есть также в виде сайта 100go.co.
  • John Arundel – The Power of Go – Tools – практика написания простых CLI-tool, пример простойшей shell.

Претенденты

  • gRPC: запуск и эксплуатация облачных приложений – скачана. Тема важная.
  • Go Cookbook – скачана. Сборник рецептов, может быть что-то полезное.
  • John Arundel – Know Go Generics – скачана. С дженериками нужно разобраться.
  • John Arundel – The Power of Go Tests – найти, если нужны будут дополнительные книги по тестам.
  • Simion A. - Test-Driven Development in Go - 2023 – про тесты, тема важная. Должно быть интересно!
  • Matthew A. Titmus - Cloud Native Go_ Building Reliable Services in Unreliable Environments-O’Reilly Media (2021).pdf: рассматривает особенности и принципы разработки “под облако”. Любопытный пример проекта key-value storage.
  • Katherine Cox-Buday - Concurrency in Go_ Tools and Techniques for Developers-O’Reilly Media (2017).pdf: рекомендует Боднер в конце главы 10. Компактная книга (230 стр.).
  • Learn Concurrent Programming with Go (James Cutajar, Manning) – тема интересная, книга свежая. Просмотрел: рассматриваются разные аспекты конкуррентности. Минусы – не увидел интересных примеров, всё какие-то очень схематичные.
  • Writing an Interpreter in Go – тематика кайфовая, книга серьёзная. Пролистать!
  • Distributed_Services_with_Go – случайно попалась, выглядит интересно, пролистать!

Темы для изучения из большого курса Яндекса

  • net/http
  • flag
  • ✅ Пакет os. Работа с переменными окружения.
  • Пакет log
    • Стандартные и сторонние пакеты для логирования
    • Логирование через middleware
  • Пакет encoding. Сериализация и десериализация данных
    • Структурные теги
    • Стандартные сериализаторы
    • Сторонние сериализаторы
  • Пакет compress. Сжатие данных
    • ✅ Код умеет сжимать данные ответа с помощью gzip
  • ✅ Пакет os. Чтение и запись в файл
  • Пакет time
    • Время: даты, интервалы, таймеры
  • Пакет context. Отмена операций и управление временем выполнения
    • Контекст: отмена операций
  • ✅ Пакет database/sql. Взаимодействие с SQL БД
    • Пакет gomock: имитация БД
    • Абстрактный интерфейс и SQL-драйверы
    • ✅ Запросы к БД
    • ✅ Запись в БД
  • Пакет errors. Обработка ошибок
    • ✅ Интроспекция ошибок (код умеет определять типы ошибок)
  • Пакеты hash, crypto. Безопасность информации
    • Хеширование и шифрование
    • Авторизация: JSON Web Token
  • Многопоточность в Go
    • Каналы
    • Паттерны многопоточности
  • Паттерны проектирования на Go
    • Порождающие паттерны
    • Структурные паттерны
    • Поведенческие паттерны
  • Антипаттерны программирования на Go
    • Постулаты Go
    • Лучшие практики, антипаттерны
  • Тулинг
    • Бенчмарки
    • Инструмент pprof
    • Форматирование с go fmt, goimports
    • godoc, Swagger
  • Статический анализ кода
    • Команда go vet
    • Пакет go/ast
    • Пакет x/analysis
    • Пакет staticcheck
  • Дженерики и кодогенерация
    • Кодогенерация
    • Дженерики
  • Флаги сборки и компиляции
    • Build constraints
    • ✅ Код добавляет версию и другие метаданные при компиляции
  • Расширенная стандартная библиотека
    • Расширенная стандартная библиотека (golang.org/x)
    • Генерация случайных чисел
      • Пакеты math/rand, crypto/rand
    • Чтение данных и буфер
      • Пакет bytes
      • Пакет bufio
    • Пакет os. Работа с директориями и процессами
      • ✅ Код умеет работать с файлами конфигов
    • Вызов внешних приложений, сигналы
      • ✅ Код умеет реагировать на сигналы ОС
    • Примитивы синхронизации
      • Пакеты sync и x/sync
    • Работа с сетью
      • Пакет net. Работа с TCP, UDP
      • IP-адреса
    • Protocol buffers и gRPC
      • Разработка gRPC клиента (агента?) и сервера

📂 Go | Последнее изменение: 13.01.2025 00:08