grpc の DialOption のオプション設定方法が上手いなーと感心したのですが、初見で理解するのが難しかったので備忘録がてら解説してみます。 やりたいこと golang にはオーバーロード(同名メソッドでも引数によって呼び出されるメソッドが変わるやつ)がないので、任意のオプションを取るメソッドを作るのに工夫が必要です。 可変引数の仕組みはあるので任意数の値をメソッドに渡したり、オプション用の struct を引数に取ることで実装できなくはないのですがデメリットがあります(後述)。 DialOption がそのへんの葛藤を上手いこと解決していたのでご紹介。 ダメだった例 はじめに検討したのですがよろしく無かった例です。 可変引数でオプションを渡す オプション用の struct を渡す 可変引数でオプションを渡す golang では可変引数の仕組みがあるので、任意数のオプションを渡すこ
![golang で汎用的な任意数のオプションを取るメソッドの作り方 | Hori Blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/7a7ee054ddbde072ee072a404c0fe61b76acbadc/height=288;version=1;width=512/https%3A%2F%2Fhori-ryota.com%2Fstatic%2Fprofile-pic-f64e0e982ec744722a8720773a52ef44.jpg)