10 промтов для Go: микросервисы, API, CLI утилиты

Введение

Go (Golang) — язык, созданный для масштабируемых систем. По данным опроса JetBrains в 2025 году, Go используют 14% разработчиков бэкенда, а в микросервисной архитектуре его доля превышает 30%. Но даже опытные инженеры тратят часы на шаблонный код: настройку маршрутов, обработку ошибок, написание тестов. Чтобы ускорить разработку, я собрал 10 проверенных промтов для Go. Они охватывают три ключевые области: микросервисы, API (REST и gRPC) и CLI-утилиты. Каждый промт — это готовый запрос к AI, который генерирует код, документацию или архитектурные решения. Ниже — только практика, без теории.

10 промтов для Go

1. Генерация REST API с Echo

Промт: «Сгенерируй REST API на Go с использованием фреймворка Echo. Определи модель User с полями ID (uuid), Name, Email. Реализуй CRUD-операции: GET /users, GET /users/:id, POST /users (с валидацией email), PUT /users/:id, DELETE /users/:id. Добавь middleware для логирования и CORS. Используй in-memory storage с sync.RWMutex. Раздели код на пакеты: handlers, models, storage.»
Результат: Полный код приложения с handlers, storage и middleware. Примерный вывод — 200 строк, включая обработку ошибок 404 и 400.
Зачем: Echo — один из самых быстрых фреймворков Go (бенчмарки показывают ~100 000 запросов/сек). Промт экономит 30–60 минут на настройке проекта.

2. Микросервис с gRPC и protobuf

Промт: «Создай микросервис на Go с gRPC. Определи protobuf-файл для сервиса OrderService с методами CreateOrder (Request: user_id, items []Item, total; Response: order_id, status), GetOrder, ListOrders. Сгенерируй серверную часть с использованием google.golang.org/grpc. Добавь health check endpoint на порт 8080. Реализуй graceful shutdown.»
Результат: protobuf-файл, сгенерированный код сервера и клиента, main.go с graceful shutdown.
Зачем: gRPC обеспечивает в 5–10 раз более высокую производительность, чем REST, при передаче бинарных данных через Protocol Buffers. Промт подходит для старта нового микросервиса.

3. CLI-утилита с Cobra

Промт: «Напиши CLI-утилиту на Go с помощью Cobra. Команда todo add "купить молоко" добавляет задачу в JSON-файл. Команда todo list выводит все задачи с номерами и статусом (выполнено/не выполнено). Команда todo done 2 отмечает задачу #2 как выполненную. Используй Viper для конфигурации (путь к файлу из переменной окружения TODO_FILE).»
Результат: Исходный код main.go, cmd/root.go, cmd/add.go, cmd/list.go, cmd/done.go, а также пример использования.
Зачем: Cobra — стандарт для CLI в Go (используется в Kubernetes, Hugo, Docker). Промт даёт готовый шаблон для любой утилиты.

4. Тестирование с testify и httptest

Промт: «Напиши unit-тесты для REST API на Go с использованием testify и httptest. Тестируй handlers из прошлого примера (GET /users). Проверь: успешный запрос (200), невалидный ID (400), несуществующий пользователь (404). Используй suite для группировки тестов. Добавь моки для storage через интерфейс.»
Результат: test-файл с тремя тестами, mock-реализация storage, настройка suite.
Зачем: Тесты на Go — обязательный этап. testify упрощает ассерты, а httptest позволяет тестировать HTTP без запуска сервера. По данным Google, код с тестами содержит на 40% меньше багов в production.

5. Обработка ошибок с pkg/errors

Промт: «Реализуй обработку ошибок в Go с использованием пакета github.com/pkg/errors. Создай функцию ReadFile, которая читает файл и возвращает ошибку с контекстом (имя файла, строка кода). В main обработай ошибку с помощью errors.Cause и выведи стек вызовов. Покажи пример с errors.Wrap и errors.New.»
Результат: Код с демонстрацией wrap, cause и stack trace.
Зачем: Стандартные ошибки в Go не содержат стектрейса. pkg/errors добавляет контекст, что упрощает отладку в микросервисах с сотнями запросов.

6. Конфигурация с Viper и envconfig

Промт: «Настрой конфигурацию Go-приложения с помощью Viper и kelseyhightower/envconfig. Определи структуру Config: Port (int, default 8080), DatabaseURL (string), LogLevel (string, default 'info'). Загружай из YAML-файла и переменных окружения. Приоритет: env > YAML > default. Добавь валидацию на этапе загрузки.»
Результат: config.go с парсингом, пример YAML-файла, main.go с инициализацией.
Зачем: Viper — стандарт де-факто для конфигурации в Go. envconfig — легковесная альтернатива для простых проектов. Промт подходит для любого микросервиса.

7. Graceful shutdown для HTTP-сервера

Промт: «Реализуй graceful shutdown для HTTP-сервера на Go. Используй signal.Notify для SIGINT и SIGTERM. При получении сигнала: останови приём новых запросов через http.Server.Shutdown, дождись завершения текущих запросов (timeout 30 секунд), закрой соединения с БД. Выведи логи на каждом этапе.»
Результат: main.go с graceful shutdown, включая обработку timeout.
Зачем: Без graceful shutdown при перезапуске микросервиса теряются данные (например, незавершённые транзакции). Это стандарт для production-систем.

8. Работа с PostgreSQL через sqlx

Промт: «Напиши код для работы с PostgreSQL на Go с использованием jmoiron/sqlx. Определи структуру User. Реализуй функции CreateUser (с возвратом ID через RETURNING), GetUserByID, ListUsers (с пагинацией LIMIT/OFFSET). Используй подготовленные запросы (Prepared statements) для защиты от SQL-инъекций. Добавь пул соединений с настройкой max_open_conns.»
Результат: db.go с функциями, пример миграции (CREATE TABLE), main.go с инициализацией пула.
Зачем: sqlx — надстройка над database/sql, упрощающая маппинг структур. Вместе с подготовленными запросами это повышает безопасность и производительность.

9. Логирование с zerolog

Промт: «Настрой структурированное логирование в Go с помощью zerolog. Создай логгер с полями: service_name, version, request_id (из контекста). Выводи в JSON-формате с цветной консолью для dev и JSON для prod. Добавь уровни: info, error, debug. Пример: log.Info().Str('user', 'alice').Msg('user logged in').»
Результат: logger.go с настройкой, middleware для добавления request_id, пример использования.
Зачем: Zerolog — один из самых быстрых логгеров Go (0 задержки на аллокациях). Структурированное логирование критично для микросервисов, где логи анализируются в ELK или Grafana.

10. Миграции БД с golang-migrate

Промт: «Создай миграции для PostgreSQL с помощью golang-migrate/migrate. Напиши две миграции: 001_create_users.sql (CREATE TABLE users) и 002_add_email_index.sql (CREATE INDEX). Реализуй Go-код для запуска миграций при старте приложения с опцией force. Добавь команду CLI для rollback.»
Результат: Папка migrations/ с SQL-файлами, migrate.go с функцией Up/Down, пример main.go.
Зачем: Миграции — обязательный инструмент для управления схемой БД. golang-migrate поддерживает версионирование и откат, что предотвращает рассинхрон между средами.

Заключение

Эти 10 промтов покрывают 80% задач, с которыми сталкивается Go-разработчик: от создания REST API до настройки логирования и graceful shutdown. Используйте их как шаблоны — адаптируйте под свои проекты, комбинируйте и расширяйте. Например, объедините промт #1 (Echo) с #4 (тесты) и #9 (логирование) — получите production-ready микросервис за 10 минут. Если вы только начинаете с Go, начните с промтов #1, #3 и #5 — они дадут фундамент. А для углублённого изучения рекомендую официальную документацию Go (go.dev/doc) и бенчмарки фреймворков (echo.labstack.com). Попробуйте один из промтов прямо сейчас — сгенерируйте первый микросервис и увидите, как AI ускоряет разработку.

← Все статьи

Комментарии