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