Писал ли обертки для вспомогательных инструментов

«Писал ли обертки для вспомогательных инструментов» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, писал обертки для CLI-утилит и API. Например, обертка для ffmpeg в Go:

type FFmpeg struct {
    binPath string
}

func NewFFmpeg(path string) *FFmpeg {
    return &FFmpeg{binPath: path}
}

func (f *FFmpeg) Convert(input, output string) error {
    cmd := exec.Command(f.binPath, 
        "-i", input, 
        "-c:v", "libx264", 
        "-crf", "23", 
        output)

    if err := cmd.Run(); err != nil {
        return fmt.Errorf("ffmpeg error: %w", err)
    }
    return nil
}

Ключевые моменты:

  1. Инкапсуляция вызовов внешних утилит
  2. Упрощение сложного API
  3. Добавление типизации и обработки ошибок
  4. Возможность мокирования в тестах

Чаще всего оборачиваю: CLI-утилиты, HTTP API, SDK облачных провайдеров.