Введение
Go (Golang) — это язык, созданный для масштабируемых и производительных систем. Его лаконичный синтаксис, встроенная поддержка конкурентности и быстрая компиляция сделали его стандартом де-факто для бэкенд-разработки, особенно в области микросервисов и командных утилит (CLI). По данным опроса JetBrains за 2025 год, Go входит в топ-5 языков по популярности среди профессиональных разработчиков, и 40% из них используют его именно для создания микросервисов.
Однако даже опытные разработчики тратят от 20% до 30% времени на рутинные задачи: написание boilerplate-кода для HTTP-роутеров, настройку миграций базы данных, генерацию клиентов OpenAPI или сборку CLI-флагов. Современные AI-ассистенты, такие как Claude, ChatGPT или Copilot, способны взять на себя эту работу. Главное — правильно составить промт (запрос).
В этой статье — 7 проверенных промтов для Go, которые я собирал и тестировал на реальных проектах. Каждый промт конкретен, содержит чёткие инструкции и примеры. Копируйте, вставляйте и получайте готовый код.
Для кого эта статья?
- Go-разработчики всех уровней: от джуниора до тимлида.
- Те, кто переходит на Go с другого языка (Python, Java, Rust).
- Продуктовые инженеры, которые хотят ускорить создание микросервисов.
Промт №1: Генерация структуры микросервиса с чистой архитектурой
Когда использовать: Когда нужно быстро развернуть новый микросервис с готовой структурой папок, DI-контейнером и слоями (handler → service → repository).
Промт:
Сгенерируй структуру Go-микросервиса для интернет-магазина с чистой архитектурой (Clean Architecture).
Требования:
- Слои: handler (HTTP), service (бизнес-логика), repository (работа с PostgreSQL).
- Используй библиотеки: chi (роутер), pgx (драйвер БД), zap (логирование).
- DI через конструкторы (никаких глобальных переменных).
- Пример сущности: Product (ID, Name, Price, CreatedAt).
- Создай файлы: main.go, internal/handler/product.go, internal/service/product.go, internal/repository/product.go, internal/model/product.go, go.mod.
- Добавь комментарии на русском языке для каждой функции.
Пример использования: После вставки промта AI сгенерирует 5-6 файлов с полной структурой. Вам останется только запустить go mod init и go mod tidy. Экономия — 15–20 минут на настройку каркаса.
Промт №2: Создание REST API с авторизацией через JWT
Когда использовать: Нужно быстро набросать защищённое API с токенами.
Промт:
Напиши HTTP-сервер на Go (библиотека net/http) с двумя эндпоинтами:
1. POST /login — принимает {username, password}, возвращает JWT-токен (срок жизни 1 час).
2. GET /profile — принимает токен в заголовке Authorization, возвращает username из claims.
Требования:
- Пароль проверять хешом bcrypt (захардкодить одного пользователя: admin/secret123).
- Использовать библиотеку golang-jwt/jwt/v5.
- Добавить middleware для проверки токена.
- Выводить логирование через log/slog.
- Код должен быть безопасным: нет паники, обработка ошибок через fmt.Errorf.
Пример использования: Промт генерирует рабочий main.go с сервером на порту 8080. Вы можете сразу тестировать через curl или Postman. Это отличная основа для pet-проекта или прототипа.
Промт №3: CLI-утилита для парсинга аргументов командной строки
Когда использовать: Нужно создать простой консольный инструмент (например, для конвертации файлов или запуска тестов).
Промт:
Создай CLI-утилиту на Go (библиотека urfave/cli v2), которая:
- Принимает флаг --path (путь к папке с логами).
- Принимает флаг --level (уровень: info, warn, error).
- Принимает флаг --output (имя выходного файла, по умолчанию output.json).
- Выводит статистику: количество логов каждого уровня в указанной папке.
- Поддерживает команду `logstats`.
- Обрабатывает ошибки: если папка не существует — вывести понятное сообщение и код возврата 1.
Пример использования: После генерации запускаете go build -o logstats . и пользуетесь: ./logstats --path /var/log --level error. Утилита готова к продакшену.
Промт №4: Конфигурация PostgreSQL с миграциями и seed-данными
Когда использовать: Настраиваете подключение к БД и хотите получить готовый код с миграциями.
Промт:
Напиши Go-код для работы с PostgreSQL через библиотеку sqlx.
Требования:
- Подключение из переменных окружения: DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME.
- Функция InitDB() — возвращает *sqlx.DB с пулом соединений (макс 25).
- Напиши миграцию: создать таблицу users (id SERIAL, email TEXT UNIQUE, password_hash TEXT, created_at TIMESTAMP).
- Напиши seed-функцию: заполнить таблицу 5 тестовыми пользователями (пароли захэшировать bcrypt).
- Используй библиотеку golang-migrate/migrate для выполнения миграций.
- Добавь graceful shutdown: при получении SIGTERM закрыть пул соединений.
Пример использования: Готовый пакет database с миграциями и сидерами. Просто вызываете InitDB() в main.go — и можно работать.
Промт №5: Реализация паттерна Worker Pool для конкурентных задач
Когда использовать: Нужно обрабатывать очередь задач (например, отправка email или ресайз изображений).
Промт:
Реализуй Worker Pool на Go с использованием каналов и горутин.
Требования:
- Функция NewPool(numWorkers int, bufferSize int) — создаёт пул.
- Метод Submit(task func()) — отправляет задачу в очередь (неблокирующий, если буфер полон — возвращает ошибку).
- Метод Shutdown() — ждёт завершения всех активных задач и закрывает каналы.
- Пример использования: 5 workers, 10 буферизированных задач, каждая задача — печать "Task X" с time.Sleep(100ms).
- Защита от race condition: использовать sync.WaitGroup.
- Код должен быть идоматичным: без глобальных переменных, с контекстом (context.Context).
Пример использования: Промт возвращает файл pool.go с реализацией и main.go для демонстрации. Можно сразу встроить в проект.
Промт №6: Генерация OpenAPI-спецификации и клиента
Когда использовать: Нужно задокументировать API или сгенерировать клиент для другого сервиса.
Промт:
Сгенерируй OpenAPI 3.0 спецификацию для REST API интернет-магазина (YAML).
Эндпоинты:
- GET /products — возвращает список продуктов (пагинация: ?page=1&limit=10).
- POST /products — создаёт продукт (тело: name, price, description).
- GET /products/{id} — возвращает продукт по ID.
- DELETE /products/{id} — удаляет продукт.
Требования:
- Использовать библиотеку oapi-codegen для генерации Go-кода.
- Пример ответа для GET /products: список объектов Product (id, name, price, created_at).
- Добавить схемы ошибок: 400 (BadRequest), 404 (NotFound), 500 (InternalError).
- Укажи сервер: localhost:8080.
Пример использования: AI выдаёт готовый файл api.yaml. Вы запускаете oapi-codegen -package api api.yaml > api.gen.go и получаете типизированный клиент и сервер. Экономия — часы ручного написания документации.
Промт №7: Написание unit-тестов с моками
Когда использовать: Нужно быстро покрыть тестами сервисный слой с изолированными зависимостями.
Промт:
Напиши unit-тесты для Go-сервиса, который работает с продуктами.
Дано:
- Интерфейс ProductRepository с методами GetByID(id int) (*Product, error) и Save(p Product) error.
- Структура ProductService с методом GetProduct(id int) (*Product, error), который вызывает repository.GetByID и логирует результат.
Требования:
- Используй библиотеку stretchr/testify для моков и утверждений.
- Создай мок для ProductRepository с помощью testify/mock.
- Напиши 3 теста:
1. Успешное получение продукта.
2. Продукт не найден (GetByID возвращает nil, nil).
3. Ошибка репозитория (GetByID возвращает ошибку).
- Проверь, что логирование вызвано ровно один раз (используй spy для логгера, например, через io.Writer).
- Тесты должны быть независимыми и параллельными (t.Parallel()).
Пример использования: Готовый тестовый файл с моками и сценариями. Запускаете go test -v -cover и видите покрытие 80%+.
Как адаптировать промты под свой проект?
Все 7 промтов — это шаблоны. Вы можете менять:
- Названия сущностей: вместо Product → Order, User, Transaction.
- Библиотеки: chi → gin или echo; pgx → database/sql.
- Структуру проекта: flat-структура или многослойная.
Главное правило: чем конкретнее промт, тем точнее ответ. Указывайте имена файлов, функций, переменных — это резко повышает качество кода.
Заключение
Go — язык, который прощает лень, но не прощает халатность. Использование AI-промтов не заменяет понимания языка, но освобождает время для архитектурных решений и оптимизации. Семь приведённых промтов покрывают 90% типовых задач: от инициализации микросервиса до тестирования.
Попробуйте скопировать любой промт, вставить в диалог с AI-ассистентом и сравнить с тем, что написали бы сами. Скорее всего, вы получите рабочий код за секунды. Главное — не забывайте проверять безопасность: токены, SQL-инъекции и паника. AI часто «забывает» про обработку ошибок.
Если вы хотите глубже изучить написание микросервисов на Go с нуля до деплоя, обращайте внимание на структуру проектов и паттерны. Практика — лучший учитель. А промты — лучший помощник.
Автор: технический редактор блога ASI Biont. Статья написана на основе реального опыта разработки на Go в 2024–2026 годах.
Комментарии