こんにちは。電通国際情報サービス(ISID) 金融ソリューション事業部の水野です。 go言語で開発しているプロジェクトで、DIを導入する機会があったので紹介します。 開発環境 Visual Studio Code 1.64.2 go 1.17.8 なぜDIが必要なのか goと言えば go generateに典型的な自動生成をイメージされる方が多く、他の言語で良く使用されるDIコンテナとは縁が薄いと思われる方も多いのではないでしょうか。 私も実はそう考えていたクチですが、依存性を切り離して状況に応じて必要な実装をInjection(注入)するというアーキテクチャは、言語を問わず有用であるケースはあります。 以下に例を挙げます。 ローカル開発環境ではDBアクセスを伴わないモックを使うが、デプロイされた環境ではDBアクセスを伴うモジュールに差し替えたい 単体テストでは各種通信(APIコールなど)
![goでDIを使う - 電通総研 テックブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/6680259890b2e9a1c264c1d8a6cc42125efc52a1/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2FI%2FISID%2F20220311%2F20220311122106.png)