> Как задаются стратегии для каждого платежа: через API или иначе (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: InDrive
Стек: Go
> Пример ответа
В Go стратегии для каждого платежа обычно задаются через конфигурационные структуры, передаваемые в API-эндпоинты, либо через фабрики стратегий, загружаемые из внешних источников.
Например, при обработке платежа можно использовать интерфейс PaymentStrategy, а конкретные реализации (например, CardStrategy, CryptoStrategy) регистрировать в мапе и выбирать по ключу из JSON-запроса:
GOtype 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 PaymentRequestjson.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), но это редкость. Основной подход - явное указание стратегии в теле запроса.
> Похожие задачи по Go
Как исправлять застрявшие платежи вручную при наличии реконсайл-джобы
Как следить за работой оркестратора и какие метрики использовать для проверки корректности
Почему вы сменили PHP на Go, что было мотиватором
Какой интерфейс реализовать для JSON маршаллинга и анмаршаллинга в Go и почему методы должны иметь ресивер по указателю
> Похожие задачи по backend
Как исправлять застрявшие платежи вручную при наличии реконсайл-джобы
Как следить за работой оркестратора и какие метрики использовать для проверки корректности
Как реализовать коллекцию для хранения связи между customerId, accountNumber и статусом ареста счета без использования объектов?
Работаете ли вы с Python и Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью