Цели

Цель по#Go: сравнить его с Питоном и понять для себя, для каких задач он предпочтителен.

Для этого:

  • ✅ Пройти бесплатный курс “Основы Go” от Яндекса.
  • ✅ Выписать вопросы для изучения из плана курсов Яндекса (см. ниже).
  • Параллельно:
    • Делать REST API go-anvlink и изучать необходимое для этого.
      • Проработать Let’s Go Further by Alex Edwards.
      • Проработать 📖 Shipping Go.
    • Дочитать 📖 Learning Go (Bodner) (Гл. 7-14, стр. 129-324).
  • Книга Pro Go:
    • глава про строки
    • глава про слайсы
  • Проработать все главы из 📖 Powerful Command-Line Applications in Go.
    • со стр.110 расписать, что сделано, и что осталось
  • Доработать 🔑 go-lockbox до конца – Issues.
  • Реализовать Идеи проектов на Go.
  • Проверить по плану курсов Яндекса, какие вопросы осталось проработать.

📚 Книги

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

  • Let’s Go
  • Let’s Go Further
  • Powerful Command-Line Applications in Go – подробное описание процесса создания интересных мини-проектов.
  • Shipping Go – настройка процесса CI/CD с примерами для проектов на Go.
  • John Arundel – The Power of Go – Tools – практика написания простых CLI-tool, пример простойшей shell.
  • 100 Go Mistakes and How to Avoid Them – есть также в виде сайта.

Претенденты

  • 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 | Последнее изменение: 11.09.2024 22:40