はじめに Dave Cheney氏のFunctional options for frendly APISを読みました。 https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis この記事で学んだデザインパターンを活かして問題を解決してみたいと思います。 Go言語にはpythonやscalaのようなデフォルト引数を指定することはできません。 ですが、構造体の初期化時に引数を省略可能にしたい場合ありませんか? この問題を解決するために最善な解決策までをプロセスを交えながら説明していきます。 解決したい問題 以下のようなfunctionをイメージしてください。 func NewServer(addr string, clientTimeout time.Duration, maxconns int, maxc