ExpertiDict

Go · Avançado · Inglês · Técnico

functional options

/ˈfʌŋk.ʃə.nəl ˈɑp.ʃənz/substantivo

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

Veja também

Todos os termos de Go