Go · Avançado · Inglês · Técnico
functional options
Padrão para configurar um construtor com funções opcionais, como NewServer(WithPort(80)). Cada opção é uma função que altera a configuração, mantendo a API estável ao crescer.
Onde usar
Aparece em bibliotecas que têm muitos parâmetros opcionais com valores padrão. Evita construtores com listas enormes e permite adicionar opções sem quebrar quem já usa.
Em código
type Server struct{ port int }
type Option func(*Server)
func WithPort(p int) Option {
return func(s *Server) { s.port = p }
}
// srv := New(WithPort(8080))Exemplos
The client uses functional options such as WithTimeout.
O cliente usa functional options como WithTimeout.
Functional options let us add settings without breaking callers.
Functional options nos deixam adicionar configurações sem quebrar quem chama.
Cuidado
Para dois ou três parâmetros, uma struct de configuração é mais simples; o padrão acrescenta código que só se paga em APIs grandes.
Sinônimos
opções funcionais