Functional options vs config struct?

Middle
235 просмотров
AFK Offer AI

Config struct — передаёшь структуру с параметрами: NewServer(Config{Port: 8080}). Просто и понятно, но все поля должны быть заполнены или иметь zero-value defaults. Functional options — NewServer(WithPort(8080), WithTimeout(5*time.Second)). Гибче: можно валидировать каждую опцию, давать умные defaults, расширять API без breaking changes. Для библиотек обычно выбирают functional options.

Следующий вопрос

Как тестировать middleware?