概要 martiniというGo向けのWebアプリケーションフレームワーク(WAF)があります。 最近リリースされて、すぐにGoコミュニティ界隈で話題になりましたね。 また、ginという別のWAFも出て、 こちらはmartiniより40倍以上も速いぜと主張しています。 どちらか迷った挙句、速さは正義ということで、ginを触ってみたのですが 結局martiniを使うことにしました。 martiniについて martiniは機能拡張を容易にするため、DIを利用しています。 この実装として、リフレクションを利用しています。 一方、Goのnet/httpパッケージはそうした実装にはなっていません。 リフレクションを利用することはパフォーマンス的にも2桁近く遅くなることがある他、 ランタイムエラーの原因にもなるなどから、一部で批判を受けました。 (そもそもDIはJavaでの古き悪しきイメージが強いのか