Files
obsidian/Go/Roadmap.md
2026-02-05 15:20:32 +00:00

54 KiB
Raw Permalink Blame History

🚀 Roadmap: Go (Golang) — от нуля до Middle разработчика

Для: Даниил — разработчик с опытом C#/.NET, знакомый с основами Go
Цель: Системно пройти весь путь и выйти на уровень уверенного Middle Go-разработчика
Общий срок: ~6-9 месяцев при занятиях 1-2 часа в день
Дата создания: Февраль 2026


📋 Содержание

  1. Этап 1: Основы языка
  2. Этап 2: Продвинутые концепции
  3. Этап 3: Стандартная библиотека
  4. Этап 4: Паттерны и архитектура
  5. Этап 5: Инструменты экосистемы
  6. Этап 6: Продвинутый уровень
  7. Пет-проекты
  8. Ресурсы
  9. Инструменты разработчика
  10. Подборка статей

Этап 1: Основы языка (3-4 недели)

💡 У тебя есть опыт C#, поэтому этот этап можно пройти быстрее, но не пропускай — Go принципиально отличается философией от C#.

Темы

Тема Описание
Установка и настройка Go toolchain, GOPATH vs Go Modules, workspace
Базовый синтаксис Переменные, константы, :=, базовые типы (int, float64, string, bool)
Составные типы Массивы, слайсы (slices), карты (maps), структуры (structs)
Управление потоком if/else, for (единственный цикл!), switch, defer
Функции Множественные возвращаемые значения, именованные возвраты, variadic функции
Указатели * и &, передача по значению vs по ссылке (аналогии с C#: ref/out)
Пакеты и модули go mod init, импорты, видимость (заглавная буква = public)
Обработка ошибок Паттерн if err != nil, errors.New, fmt.Errorf с %w
Строки и руны UTF-8, rune vs byte, пакет strings

Ресурсы для этапа

Практические задания

  1. Пройти весь Tour of Go
  2. Решить 15-20 задач на Exercism (Go track)
  3. Написать программу «Угадай число» с вводом из консоли
  4. Реализовать калькулятор с поддержкой операций +, -, *, / через CLI-аргументы
  5. Написать утилиту подсчёта слов в файле (аналог wc)
  6. Реализовать простую телефонную книгу с сохранением в JSON-файл

Чеклист: что должен уметь после этапа

  • Создать Go-проект с нуля (go mod init)
  • Объяснить разницу между слайсом и массивом
  • Работать со структурами и методами
  • Корректно обрабатывать ошибки (не игнорировать err)
  • Использовать defer для очистки ресурсов
  • Работать с указателями
  • Понимать систему пакетов и видимость
  • Читать и записывать файлы
  • Объяснить, почему в Go нет while, class, наследования и исключений

Этап 2: Продвинутые концепции (4-5 недель)

Темы

Тема Описание
Интерфейсы Неявная реализация, пустой интерфейс any, type assertion, type switch
Горутины (goroutines) Легковесные потоки, go func(), lifecycle
Каналы (channels) Буферизованные и небуферизованные, направленные каналы
Select Мультиплексирование каналов, таймауты, default
Sync примитивы sync.Mutex, sync.RWMutex, sync.WaitGroup, sync.Once, sync.Map
Context context.Background(), WithCancel, WithTimeout, WithValue, пробрасывание
Generics Type parameters, constraints, comparable, any, когда использовать
Embedding Встраивание структур и интерфейсов (вместо наследования)
Обработка ошибок (продвинуто) errors.Is, errors.As, wrapping, sentinel errors, custom error types
Паттерн init() Порядок инициализации, init() функции

Ресурсы для этапа

Практические задания

  1. Pipeline: написать конвейер обработки данных через каналы (генератор → фильтр → обработчик)
  2. Fan-Out/Fan-In: параллельно скачать 10 URL и собрать результаты
  3. Worker Pool: реализовать пул воркеров с ограничением конкурентности
  4. Graceful Shutdown: HTTP-сервер с корректным завершением по сигналу
  5. Реализовать потокобезопасный кеш с TTL через sync.RWMutex
  6. Написать generic-функции Map, Filter, Reduce для слайсов
  7. Rate Limiter через каналы и time.Ticker

Чеклист: что должен уметь после этапа

  • Объяснить разницу между горутинами и потоками ОС
  • Использовать каналы для коммуникации между горутинами
  • Предотвращать дедлоки и утечки горутин
  • Корректно использовать context для отмены и таймаутов
  • Реализовать интерфейс и понимать неявную реализацию
  • Написать generic-функцию с constraint'ами
  • Использовать sync.WaitGroup для ожидания горутин
  • Знать когда использовать mutex, а когда — каналы
  • Объяснить embedding vs наследование

Этап 3: Стандартная библиотека (4-5 недель)

Темы

Тема Описание
net/http HTTP-сервер, роутинг (Go 1.22+ pattern routing), middleware, http.Client
encoding/json Marshal/Unmarshal, теги структур, json.RawMessage, streaming decoder
io / io/fs Reader/Writer интерфейсы, io.Copy, io.Pipe, файловые системы
os / os/exec Работа с файлами, переменные окружения, запуск процессов
testing Unit-тесты, table-driven tests, бенчмарки, subtests, testing.T
log/slog Структурированное логирование (Go 1.21+)
database/sql Подключение к БД, prepared statements, транзакции, connection pool
html/template, text/template Шаблонизация
regexp Регулярные выражения
time Работа с датой/временем, таймеры, тикеры, time.Format
flag / os.Args Парсинг CLI-аргументов
crypto Хеширование, bcrypt, JWT-основы
embed Встраивание файлов в бинарник (//go:embed)

Ресурсы для этапа

Практические задания

  1. HTTP-сервер с CRUD API для заметок (хранение в памяти)
  2. Добавить к API middleware: логирование, recovery, CORS
  3. JSON-парсер конфигурации с валидацией
  4. Unit-тесты с table-driven подходом для всех API-эндпоинтов
  5. Бенчмарк сравнения разных подходов к конкатенации строк
  6. CLI-утилита с подкомандами (аналог git: add, commit, log)
  7. HTTP-клиент с retry-логикой, таймаутами и обработкой ошибок
  8. Подключить PostgreSQL через database/sql + миграции

Чеклист: что должен уметь после этапа

  • Создать HTTP API с роутингом на net/http (без фреймворков)
  • Написать middleware-цепочку
  • Сериализовать/десериализовать JSON со вложенными структурами
  • Писать table-driven тесты и бенчмарки
  • Использовать slog для структурированного логирования
  • Работать с database/sql (подключение, CRUD, транзакции)
  • Парсить CLI-флаги и аргументы
  • Понимать интерфейсы io.Reader / io.Writer и их композицию
  • Использовать //go:embed для встраивания статики

Этап 4: Паттерны и архитектура (4-6 недель)

Темы

Тема Описание
Структура проекта /cmd, /internal, /pkg, Standard Go Project Layout
Clean Architecture Слои: domain, usecase, repository, delivery; зависимости внутрь
DDD в Go Entities, Value Objects, Aggregates, Repositories в контексте Go
SOLID в Go Как применять принципы в языке без классов и наследования
Dependency Injection Ручной DI через конструкторы (без контейнеров как в C#)
Repository Pattern Абстракция над хранилищем данных через интерфейсы
Паттерны ошибок Sentinel errors, typed errors, error wrapping стратегии
Configuration ENV, YAML/TOML конфиги, viper, 12-factor apps
Middleware/Decorator Обёртки для бизнес-логики и HTTP
Graceful Degradation Circuit breaker, retry, timeout patterns

Ресурсы для этапа

Практические задания

  1. Рефакторить API из этапа 3 в Clean Architecture
  2. Выделить domain-слой с Value Objects и бизнес-правилами
  3. Реализовать Repository Pattern с двумя реализациями (PostgreSQL + in-memory)
  4. Добавить DI через конструкторы (wire up в main.go)
  5. Написать конфигурацию через ENV + YAML с fallback
  6. Реализовать Circuit Breaker для внешнего API-вызова
  7. Написать integration-тесты с testcontainers

Чеклист: что должен уметь после этапа

  • Организовать Go-проект по Clean Architecture
  • Использовать интерфейсы для DI без фреймворков
  • Объяснить разницу между /internal и /pkg
  • Применять SOLID-принципы в Go-контексте
  • Проектировать слои приложения с чёткими границами
  • Работать с конфигурацией по 12-factor
  • Использовать DDD-подход для бизнес-логики
  • Писать интеграционные тесты

Этап 5: Инструменты экосистемы (2-3 недели)

Темы

Тема Описание
Docker Multi-stage Dockerfile для Go, scratch/distroless, оптимизация размера
CI/CD GitHub Actions для Go (lint, test, build, deploy)
golangci-lint Настройка .golangci.yml, популярные линтеры
Makefile Автоматизация сборки, тестов, миграций
Swagger/OpenAPI Генерация документации: swaggo/swag, oapi-codegen
gRPC + Protobuf Межсервисное взаимодействие, кодогенерация
Миграции БД golang-migrate, goose
ORM и query builders sqlx, pgx, GORM, sqlc
Мониторинг Prometheus метрики, health checks
Логирование slog, zap, zerolog — структурированные логгеры

Ресурсы для этапа

Практические задания

  1. Написать multi-stage Dockerfile для Go-приложения (<20MB образ)
  2. Настроить GitHub Actions: lint → test → build → push Docker image
  3. Настроить golangci-lint с .golangci.yml (минимум 10 линтеров)
  4. Создать Makefile с командами: build, test, lint, run, migrate
  5. Добавить Swagger-документацию к REST API
  6. Написать gRPC-сервис с protobuf
  7. Добавить Prometheus-метрики к HTTP-серверу

Чеклист: что должен уметь после этапа

  • Собирать Go в Docker с multi-stage build
  • Настроить CI/CD pipeline для Go-проекта
  • Использовать golangci-lint и понимать основные линтеры
  • Генерировать API-документацию (Swagger)
  • Работать с gRPC + Protobuf
  • Управлять миграциями БД
  • Добавлять метрики и health checks
  • Писать Makefile для автоматизации

Этап 6: Продвинутый уровень (4-6 недель)

Темы

Тема Описание
Concurrency Patterns Pipeline, Fan-Out/Fan-In, Or-Done, Tee, Bridge
Performance Escape analysis, stack vs heap, memory alignment, reducing allocations
Profiling (pprof) CPU/Memory профилирование, go tool pprof, flame graphs
Tracing go tool trace, distributed tracing (OpenTelemetry)
Benchmarking testing.B, benchstat, профилирование горячего кода
Unsafe unsafe.Pointer, когда (не) использовать
CGO Интеграция с C-библиотеками, накладные расходы
Reflection reflect пакет, performance cost, альтернативы через generics
Garbage Collector Как работает GC в Go, тюнинг через GOGC, GOMEMLIMIT
Build tags и Cross-compilation Условная компиляция, сборка под разные платформы
Fuzzing Встроенное fuzz-тестирование (Go 1.18+)

Ресурсы для этапа

Практические задания

  1. Профилировать реальное приложение с pprof, найти и устранить bottleneck
  2. Написать бенчмарки для критичного кода и оптимизировать (минимум 2x ускорение)
  3. Реализовать паттерн Pipeline с graceful shutdown
  4. Написать fuzz-тесты для парсера/валидатора
  5. Реализовать свой connection pool с ограничением конкурентности
  6. Собрать приложение под 3+ платформы через cross-compilation
  7. Добавить OpenTelemetry tracing к микросервису

Чеклист: что должен уметь после этапа

  • Профилировать CPU и память через pprof
  • Оптимизировать код на основе данных бенчмарков
  • Реализовать продвинутые concurrency patterns
  • Настроить distributed tracing
  • Понимать как работает GC и влиять на его поведение
  • Использовать fuzz-тестирование
  • Cross-компилировать Go-приложения
  • Знать когда (не) использовать unsafe и reflection

🛠 Пет-проекты

Проект 1: CLI-утилита — gowatch (File Watcher)

Уровень: Начальный → Средний
Когда делать: После этапа 1-2
Срок: 1-2 недели

Описание: Утилита, которая отслеживает изменения файлов в директории и выполняет указанные команды. Аналог nodemon / entr.

Функционал:

  • Рекурсивный watch по файловой маске (*.go, *.yaml)
  • Дебаунс повторных событий
  • Выполнение произвольных команд при изменении
  • Конфигурация через YAML или CLI-флаги
  • Graceful restart отслеживаемого процесса

Стек: Go stdlib, fsnotify, cobra (CLI), viper (конфиг)

Аналоги для вдохновения:

Чему научишься: Работа с файловой системой, горутины, каналы, CLI-парсинг, конфигурация.


Проект 2: REST API — Сервис управления задачами (Task Manager)

Уровень: Средний
Когда делать: После этапа 3-4
Срок: 2-3 недели

Описание: Полноценный REST API для управления задачами с аутентификацией, ролями и пагинацией. Типичный backend, аналог того, что делаешь на C#/ASP.NET.

Функционал:

  • CRUD задач с проектами и тегами
  • JWT-аутентификация (регистрация/логин)
  • Ролевая модель (admin/user)
  • Пагинация, сортировка, фильтрация
  • Swagger-документация
  • Docker Compose (app + PostgreSQL + Redis)
  • Unit + Integration тесты

Стек: net/http (Go 1.22+) или chi, PostgreSQL, pgx/sqlc, golang-migrate, Redis, JWT, Docker

Аналоги для вдохновения:

Чему научишься: Clean Architecture, работа с БД, аутентификация, middleware, тестирование, Docker.


Проект 3: Telegram-бот — Персональный ассистент

Уровень: Средний
Когда делать: После этапа 3
Срок: 1-2 недели

Описание: Telegram-бот с полезным функционалом: заметки, напоминания, интеграция с API (погода, курсы валют).

Функционал:

  • Сохранение заметок с категориями
  • Напоминания (cron-based)
  • Получение курса валют / погоды через внешние API
  • Inline-кнопки и callback'и
  • Persistent storage (SQLite/PostgreSQL)
  • Graceful shutdown

Стек: telebot или telegram-bot-api, cron, sqlite3/pgx

Аналоги для вдохновения:

Чему научишься: Работа с внешними API, webhook/polling, state management, scheduled tasks.


Проект 4: Микросервис с очередями — Система уведомлений

Уровень: Средний → Продвинутый
Когда делать: После этапа 4-5
Срок: 3-4 недели

Описание: Система из нескольких микросервисов, общающихся через очереди сообщений. Producer принимает запросы на уведомления, consumer'ы отправляют через разные каналы (email, Telegram, webhook).

Функционал:

  • API-сервис (producer): приём запросов на уведомления
  • Worker-сервисы (consumers): email, Telegram, webhook
  • Retry-логика и Dead Letter Queue
  • gRPC для синхронной коммуникации между сервисами
  • Distributed tracing (OpenTelemetry)
  • Docker Compose для всей инфраструктуры
  • Prometheus + Grafana для мониторинга

Стек: RabbitMQ или Kafka, gRPC, Protobuf, PostgreSQL, Docker Compose, OpenTelemetry, Prometheus

Аналоги для вдохновения:

Чему научишься: Микросервисная архитектура, message queues, gRPC, observability, distributed systems.


Проект 5: Open-Source инструмент — goscan (Code Quality Scanner)

Уровень: Продвинутый
Когда делать: После этапа 6
Срок: 4-6 недель

Описание: CLI-инструмент для анализа Go-кода: поиск антипаттернов, проверка архитектурных правил, генерация отчётов. Альтернатива: свой linter, генератор кода, или инструмент для DevOps.

Варианты проектов:

  1. Code scanner — AST-анализатор для поиска антипаттернов
  2. API mock generator — генерация моков из OpenAPI-спеки
  3. DB schema diff tool — сравнение схем БД и генерация миграций
  4. Log aggregator — сборщик логов из нескольких сервисов с поиском

Функционал (для code scanner):

  • Парсинг Go AST (go/ast, go/parser)
  • Кастомные правила через YAML-конфиг
  • Отчёты в разных форматах (text, JSON, HTML)
  • CI-интеграция (exit code, GitHub annotations)
  • Публикация на GitHub с README, CI, GoDoc

Стек: go/ast, go/parser, go/types, cobra, CI/CD

Аналоги для вдохновения:

Чему научишься: Go AST, кодогенерация, open-source workflow, документация, CI/CD, публикация.


📚 Ресурсы

Книги

Обязательные (Must Read)

Книга Автор Описание
The Go Programming Language Donovan & Kernighan "Библия Go" — фундаментальная книга, написанная соавтором «K&R C». Покрывает всё от основ до продвинутых тем
Learning Go, 2nd Ed. Jon Bodner (O'Reilly, 2024) Идеальна для перехода с другого языка. Покрывает generics, slog, новые фичи Go 1.21+
100 Go Mistakes and How to Avoid Them Teiva Harsanyi (Manning, 2022) 100 реальных ошибок Go-разработчиков с объяснениями. Незаменима для роста
Concurrency in Go Katherine Cox-Buday (O'Reilly) Глубокое погружение в конкурентность: горутины, каналы, паттерны

Рекомендуемые

Книга Автор Описание
Go: идиомы и паттерны проектирования Jon Bodner (Питер, перевод) Русское издание с паттернами Go
Domain-Driven Design with Golang Matt Boyle (Packt, 2022) DDD специфично для Go
Let's Go / Let's Go Further Alex Edwards Лучшие книги по веб-разработке на Go (практичные, с реальным проектом)
Mastering Go, 4th Ed. Mihalis Tsoukalos (Packt, 2024) Продвинутые темы: networking, системное программирование, безопасность
The Power of Go: Tools John Arundel (Bitfield, 2024) Написание CLI-утилит на Go
Go at Scale: Patterns for Professional Development 2025 Паттерны для production Go
Cloud Native Go Matthew A. Titmus (O'Reilly) Облачные приложения на Go
Distributed Services with Go Travis Jeffery (Pragmatic Bookshelf) Распределённые системы на Go

Онлайн-курсы

Бесплатные

Курс Платформа Описание
A Tour of Go go.dev Официальный интерактивный тур — обязательный стартовый ресурс
Learn Go with Tests GitBook TDD-подход к изучению Go. Отлично для практиков
Go by Example gobyexample.com Краткие примеры на каждую тему
Exercism Go Track exercism.org 140+ упражнений с менторингом от сообщества
Gophercises gophercises.com Бесплатные упражнения с видео-решениями от Jon Calhoun
Go Recipes (GitHub) GitHub Огромная подборка рецептов и инструментов

Платные

Курс Платформа Описание
Learn Go (Boot.dev) boot.dev Интерактивный курс с проектами, один из лучших в 2025
Go: The Complete Developer's Guide Udemy Stephen Grider — хорошо структурированный курс
Web Development w/ Go Udemy Todd McLeod — легенда Go-обучения
Ultimate Go Programming Ardan Labs William Kennedy — самый глубокий курс. Для серьёзного изучения
Let's Go / Let's Go Further alexedwards.net Практический курс веб-разработки (книга + код)
Backend-разработчик на Go (Skillfactory) Skillfactory Расширенный курс на русском

YouTube-каналы

Канал Описание
The Go Programming Language (@golang) Официальный канал Go — доклады с GopherCon, обновления языка
Anthony GG Практичные туториалы, микросервисы, архитектура на Go
NicJackson Nic Jackson (HashiCorp) — Go + DevOps, микросервисы
MarioCarrion Go + DDD + Clean Architecture, production-проекты
Melkey Go-проекты, системный дизайн
justforfunc Francesc Campoy (ex-Google) — глубокие разборы Go
TechWorld with Nana Хороший стартовый курс по Go
Николай Тузов (Skillbox) Go на русском языке

Telegram-каналы и сообщества

Канал/Чат Ссылка Описание
Библиотека Go-разработчика @goproglib 23K+ подписчиков, статьи, новости, вакансии
4gophers @gophernews Новости Go-экосистемы
Golang — pair programming @golang_pair Парное программирование на Go
Gopher Club Сообщество Go разработчиков Обсуждение Go и разработки
Golang Go Сообщество СНГ Go разработчиков Вопросы и обсуждения
Go (Pair programming) Чат для совместного кодинга
r/golang (Reddit) reddit.com/r/golang Крупнейшее англоязычное сообщество
Gophers Slack gophers.slack.com Международный Slack Go-разработчиков

GitHub-репозитории для изучения

Хорошо написанный Go-код, на котором стоит учиться:

Репозиторий Описание
avelino/awesome-go 🏆 Каталог всех Go-библиотек и фреймворков (140k)
golang/go Исходный код самого Go — эталон стиля
kubernetes/kubernetes Крупнейший Go-проект. Можно изучать архитектуру
docker/cli Docker CLI на Go — отличный пример CLI-утилиты
hashicorp/terraform Terraform — пример enterprise Go
prometheus/prometheus Prometheus — мониторинг, хорошая архитектура
go-chi/chi Лёгкий HTTP-роутер — чистый идиоматичный код
uber-go/zap Высокопроизводительный логгер от Uber
evrone/go-clean-template Шаблон Clean Architecture для Go (7.2k)
tmrts/go-patterns Паттерны проектирования в Go (25k)
ThreeDotsLabs/wild-workouts-go-ddd-example DDD + CQRS + Clean Architecture пример (6k)
nikolaydubina/go-recipes Рецепты и полезные трюки Go (4k)
a8m/golang-cheat-sheet Шпаргалка по синтаксису Go

Подкасты

Подкаст Описание
Go Time (Changelog) Главный подкаст о Go — архив из 300+ эпизодов. Финальный выпуск вышел в 2024, но архив бесценен
Cup o' Go Еженедельные новости Go за ~15 минут. Актуальный и лёгкий формат
GolangShow Подкаст на английском и русском (от русскоязычных авторов)
Go Gab Короткие эпизоды (~3 мин) о Go

🔧 Инструменты разработчика

IDE / Редактор

Инструмент Описание Ссылка
GoLand (JetBrains) Лучшая IDE для Go. Рефакторинг, отладка, поддержка golangci-lint (с 2025.1). Платная, но есть бесплатная Community Edition jetbrains.com/go
VS Code + Go Extension Бесплатная альтернатива. Extension от Go Team: gopls, delve, golangci-lint VS Code Go
Neovim + gopls Для любителей Vim. gopls как LSP, nvim-lspconfig gopls

Рекомендация для тебя: GoLand (ты привык к JetBrains с Rider/ReSharper в C#-мире) или VS Code (если хочешь универсальность).

Обязательные плагины VS Code:

  • golang.Go — основной плагин
  • EditorConfig — единый стиль кода
  • REST Client — тестирование API
  • Docker — работа с контейнерами
  • GitLens — улучшенный Git

Линтеры

Инструмент Описание
golangci-lint 🏆 Мета-линтер — агрегирует 100+ линтеров в одном инструменте. Обязателен
staticcheck Статический анализатор, входит в golangci-lint
gosec Проверка безопасности кода
errcheck Проверка необработанных ошибок
govet Встроенный в Go, ищет подозрительные конструкции
gofumpt Строгая версия gofmt
revive Быстрый, настраиваемый линтер

Минимальный .golangci.yml:

linters:
  enable:
    - errcheck
    - gosimple
    - govet
    - ineffassign
    - staticcheck
    - unused
    - gosec
    - gofumpt
    - revive
    - gocritic
    - exhaustive
    - prealloc
    - misspell

linters-settings:
  gocritic:
    enabled-tags:
      - diagnostic
      - style
      - performance

Профилирование

Инструмент Описание
pprof Встроенный профилировщик Go: CPU, memory, goroutines, block
go tool pprof CLI для анализа pprof-данных
go tool trace Трассировка выполнения программы — визуализация горутин, GC
Pyroscope Continuous profiling — профилирование в production
fgprof Full goroutine profiling (wall-clock time)

Быстрый старт pprof:

import _ "net/http/pprof"

go func() {
    log.Println(http.ListenAndServe("localhost:6060", nil))
}()
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
go tool pprof http://localhost:6060/debug/pprof/heap

Тестирование

Инструмент Описание
testing Встроенный пакет тестирования — go test ./...
testify Assertions, mocks, suites — самая популярная тест-библиотека
gomock Генерация моков из интерфейсов (uber-go/mock — актуальный форк)
testcontainers-go Docker-контейнеры для интеграционных тестов
go-cmp Умное сравнение значений от Google
httptest Встроенный пакет для тестирования HTTP
Fuzzing go test -fuzz=FuzzXxx — встроенное fuzz-тестирование (Go 1.18+)
gotestsum Красивый вывод тестов

Отладка

Инструмент Описание
Delve (dlv) Основной отладчик Go. Breakpoints, step, goroutine inspection
GoLand Debugger Встроен в GoLand, использует Delve
VS Code Go Debugger Также на базе Delve, настройка через launch.json

Команды Delve:

dlv debug ./cmd/server       # запуск с отладкой
dlv test ./pkg/service        # отладка тестов
dlv attach <pid>              # подключение к процессу

Управление зависимостями

go mod init github.com/user/project   # инициализация модуля
go mod tidy                            # очистка зависимостей
go mod vendor                          # вендоринг
go mod graph                           # граф зависимостей
go get github.com/pkg@latest           # добавить/обновить зависимость
go work init                           # Go workspaces (мульти-модуль)

Полезные CLI-утилиты

Утилита Описание
go generate Кодогенерация через //go:generate комментарии
go vet Статический анализ
gofmt / goimports Форматирование кода
gofumpt Строгое форматирование
godoc Локальная документация
gore Go REPL для экспериментов
gojq jq, написанный на Go
goreleaser Автоматизация релизов Go-приложений
ko Сборка Go в OCI-образы без Dockerfile
buf Линтер и генератор для Protobuf
task Альтернатива Make на Go
air Live reload для Go-разработки

📰 Подборка статей (топ-25+)

Официальный блог Go (go.dev/blog)

  1. Effective Go — основа основ, обязательно прочитать
  2. Go Concurrency Patterns — паттерны конкурентности (pipelines)
  3. Advanced Go Concurrency Patterns — продвинутые паттерны
  4. Share Memory by Communicating — философия Go concurrency
  5. Error Handling and Go — обработка ошибок
  6. Working with Errors in Go 1.13 — errors.Is, errors.As, wrapping
  7. An Introduction to Generics — введение в дженерики
  8. Structured Logging with slog — новый пакет логирования
  9. Routing Enhancements in Go 1.22 — улучшения net/http
  10. Profiling Go Programs — профилирование
  11. Getting to Go: Journey of Go's Garbage Collector — GC deep dive
  12. Go at Google: Language Design — философия проектирования Go (Rob Pike)

Лучшие статьи на Habr

  1. Паттерны проектирования в Golang — обзор основных паттернов (2025)
  2. Паттерны многопоточности в Go — concurrency patterns
  3. Go-микросервисы: Clean Architecture и DDD — стандартизация архитектуры (2025)
  4. Обработка ошибок в Go — полный гайд (2025)
  5. Ошибки в Go: Обработка, Обёртки и Лучшие Практики — практичный подход (2025)
  6. 5 паттернов параллельного программирования в GO — OTUS
  7. 5 паттернов проектирования в Go на примере котиков — Singleton, Factory, etc. (2024)
  8. Книга «Go: идиомы и паттерны проектирования» — обзор от Питер

Англоязычные must-read статьи

  1. The "10x" Commandments of Highly Effective Go (JetBrains) — 10 заповедей Go (2025)
  2. The Go Ecosystem in 2025 (JetBrains) — тренды экосистемы
  3. Practical Go: Real World Advice (Dave Cheney) — практические советы
  4. Go Coding Official Standards and Best Practices — стандарты и best practices
  5. What are the best Go books in 2026? (Bitfield Consulting) — обзор книг
  6. Pprof Through Examples — профилирование на примерах
  7. Go essentials reading list (GitHub) — essential reading list
  8. Awesome Go Articles (GitHub) — курированный список статей

🗓 Сводная таблица прогресса

Этап Длительность Статус
1. Основы 3-4 недели
2. Продвинутые концепции 4-5 недель
3. Стандартная библиотека 4-5 недель
4. Паттерны и архитектура 4-6 недель
5. Инструменты экосистемы 2-3 недели
6. Продвинутый уровень 4-6 недель
Пет-проект 1: CLI-утилита 1-2 недели
Пет-проект 2: REST API 2-3 недели
Пет-проект 3: Telegram-бот 1-2 недели
Пет-проект 4: Микросервис 3-4 недели
Пет-проект 5: Open-source инструмент 4-6 недель

💡 Советы для перехода с C#/.NET на Go

  1. Нет классов и наследования → используй структуры + интерфейсы + embedding. Go — про композицию.
  2. Нет исключенийif err != nil { return err } — это нормально и идиоматично. Привыкни.
  3. Нет DI-контейнера → всё через конструкторы. func NewService(repo Repository) *Service. Просто и прозрачно.
  4. Нет LINQ → для простых операций — for loops. Для сложных — generics (Map, Filter).
  5. Нет async/await → горутины + каналы. Модель CSP вместо Task-based.
  6. Нет nugetgo mod — проще и быстрее.
  7. Пакеты вместо namespaces → visibility через регистр букв (заглавная = public).
  8. Минимализм → Go-сообщество предпочитает stdlib и маленькие библиотеки вместо фреймворков.
  9. gofmt → один стиль для всех. Никаких споров о форматировании.
  10. Быстрая компиляция → Go компилируется за секунды. После C# это будет приятным сюрпризом.

📌 Последнее обновление: Февраль 2026
📌 Файл: /home/daniil/.openclaw/workspace/golang/roadmap.md