Gopherなら既にご存知なのだろうけど。 Golangでインスタンスを作成する際に可変長引数を受け付けつつ、拡張を考慮した設計をしたかった。 デフォルト引数を使えればいいけど、Golangにデフォルト引数はないので、色々と探してFunctional Option Patternということを 知ったのでメモ。 簡単な例を示してみてみようと思う。 package client type Configs struct { Port int Tiemout time.Duration UserAgent string } type Client interface { Do(req *http.Request) (res *http.Response, err error) }