> Как задаются стратегии для каждого платежа: через API или иначе (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: InDrive

Стек: Go

> Пример ответа

В Go стратегии для каждого платежа обычно задаются через конфигурационные структуры, передаваемые в API-эндпоинты, либо через фабрики стратегий, загружаемые из внешних источников.

Например, при обработке платежа можно использовать интерфейс PaymentStrategy, а конкретные реализации (например, CardStrategy, CryptoStrategy) регистрировать в мапе и выбирать по ключу из JSON-запроса:

GO
type PaymentStrategy interface {
Pay(amount float64) error
}
type PaymentRequest struct {
Strategy string `json:"strategy"`
Amount float64 `json:"amount"`
}
var strategies = map[string]PaymentStrategy{
"card": &CardStrategy{},
"crypto": &CryptoStrategy{},
}
func HandlePayment(w http.ResponseWriter, r *http.Request) {
var req PaymentRequest
json.NewDecoder(r.Body).Decode(&req)
strategy, ok := strategies[req.Strategy]
if !ok {
http.Error(w, "unknown strategy", 400)
return
}
strategy.Pay(req.Amount)
}

Также стратегии могут загружаться из конфигурационных файлов (YAML, TOML) или переменных окружения, но в рантайме выбор всё равно происходит через API-запрос. Альтернатива - использование паттерна "Стратегия" с динамической загрузкой плагинов (например, через plugin в Go), но это редкость. Основной подход - явное указание стратегии в теле запроса.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью