Functional options в Go. Паттерн конфигурации.

Ответ

Опциональные параметры через функции: Option - тип func(*Config) или интерфейс; конструктор принимает ...Option и применяет их к конфигу. Удобно для большого числа опций и значений по умолчанию. В стандартной библиотеке: grpc.Dial(addr, grpc.WithInsecure(), grpc.WithBlock()).

type Option func(*Server)
func WithPort(p int) Option { return func(s *Server) { s.port = p } }
func NewServer(opts ...Option) *Server {
    s := &Server{port: 8080}
    for _, o := range opts { o(s) }
    return s
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.