Введение
Go (Golang) — один из самых быстрорастущих языков для бэкенда и инфраструктурных инструментов. Его компилируемость, встроенная горутинная модель и минималистичный синтаксис делают его идеальным для микросервисов и CLI. Но даже опытные разработчики тратят часы на рутинные задачи: генерацию кода, написание тестов, рефакторинг. Я собрал 12 проверенных промтов, которые реально ускоряют работу — от проектирования REST API до отладки горутин. Каждый промт сопровождается примером и кодом.
1. Генерация скелета HTTP-сервера
Промт: «Напиши Go-сервер с маршрутизацией на chi/v5, middleware для логирования и CORS, обработчики для /health и /api/v1/users. Используй стандартный net/http». Пример: после выполнения получаешь готовый main.go с настройкой маршрутов, логгером и структурой ответа. Код:
package main
import (
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"net/http"
)
func main() {
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Use(middleware.CORS)
r.Get("/health", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("OK"))
})
r.Route("/api/v1/users", func(r chi.Router) {
r.Get("/", listUsers)
r.Post("/", createUser)
})
http.ListenAndServe(":8080", r)
}
2. Генерация тестов с моками
Промт: «Напиши unit-тест для функции getUserByID(id int) (*User, error) с использованием testify/mock. Создай mock для интерфейса UserRepository». Пример: AI создает файл user_test.go с тестовыми случаями (success, not found, db error). Код:
func TestGetUserByID(t *testing.T) {
mockRepo := new(MockUserRepository)
mockRepo.On("FindByID", 1).Return(&User{ID: 1, Name: "Alice"}, nil)
service := NewUserService(mockRepo)
user, err := service.GetUserByID(1)
assert.NoError(t, err)
assert.Equal(t, "Alice", user.Name)
}
3. Рефакторинг legacy-функции
Промт: «Рефактори эту функцию: разбей на мелкие функции, добавь error handling, используй контекст для таймаута. Исходный код: func process(data []byte) ([]byte, error) { … }». Пример: AI выделяет этапы валидации, трансформации и сохранения, оборачивает в контекст с дедлайном.
4. Оптимизация горутин с паттерном worker pool
Промт: «Реализуй worker pool для обработки 1000 задач через каналы. Число воркеров — 5. Каждая задача — функция, которая спит 100ms». Пример: код с sync.WaitGroup, буферизированным каналом и graceful shutdown. Код:
func main() {
jobs := make(chan int, 100)
var wg sync.WaitGroup
for w := 1; w <= 5; w++ {
wg.Add(1)
go worker(w, jobs, &wg)
}
for j := 1; j <= 1000; j++ {
jobs <- j
}
close(jobs)
wg.Wait()
}
5. Генерация CLI-утилиты с cobra
Промт: «Создай CLI-приложение с cobra: команды init, run, stop. Каждая команда печатает своё название и имеет флаг --verbose». Пример: AI генерирует root.go, init.go, run.go, stop.go с настройкой флагов и подкоманд.
6. Написание middleware для авторизации
Промт: «Напиши middleware для JWT-аутентификации на Go. Проверяй токен из заголовка Authorization, извлекай userID и клади в контекст». Пример: код с использованием jose2go или golang-jwt.
7. Документирование API с swagger
Промт: «Сгенерируй swagger-аннотации для REST-эндпоинтов /users. Используй github.com/swaggo/swag. Опиши модель User». Пример: AI добавляет комментарии к контроллеру и модели.
8. Парсинг конфигурации из YAML
Промт: «Напиши функцию, которая читает config.yaml и заполняет структуру Config с полями Port, Database (Host, Port, User)». Пример: код с viper или gopkg.in/yaml.v3.
9. Graceful shutdown HTTP-сервера
Промт: «Реализуй graceful shutdown для HTTP-сервера: обработка SIGINT и SIGTERM, завершение активных запросов за 30 секунд». Пример: код с signal.Notify и Shutdown.
10. Миграция базы данных
Промт: «Напиши скрипт миграции для PostgreSQL: создание таблицы users с полями id, name, email, created_at. Используй golang-migrate». Пример: SQL-файл и Go-код для запуска.
11. Логирование с zerolog
Промт: «Настрой структурированное логирование с zerolog: вывод в JSON, уровень info, поля app и version». Пример: код с инициализацией логгера.
12. Отладка deadlock'ов
Промт: «Найди deadlock в этом коде с горутинами и мьютексами и исправь. Код: …». Пример: AI выявляет проблему порядка блокировок и предлагает решение с sync.Mutex.
Заключение
Эти 12 промтов покрывают 80% рутинных задач в Go-разработке. Они экономят часы на написание шаблонного кода, тестов и документации. Попробуйте их в своём проекте — и вы увидите, как AI превращается из игрушки в инструмент продакшн-уровня. Совет: адаптируйте промты под свои библиотеки и версии Go. Хорошего кода!
Комментарии