Menu
Coddy logo textTech

ブランク識別子 `_`

CoddyのGOジャーニー「論理とフロー」セクションの一部 — レッスン 55/68。

エクスポートされた関数や変数を使用するためではなく、そのサイドエフェクト(副作用)を発生させるためにパッケージをインポートする必要がある場合があります。最も一般的なサイドエフェクトは、パッケージの init 関数の実行です。これはパッケージがインポートされるときに自動的に実行されます。

Goはこの目的のためにブランク識別子 _ を提供しています。ブランク識別子を使用してパッケージをインポートすると、Goはそのパッケージをインポートして初期化コードを実行しますが、そのパッケージのエクスポートされた識別子を使用する必要はありません。

import _ "database/sql/driver"

これは、パッケージを別のシステムに登録したり、セットアップタスクを実行したりする必要があるものの、コード内でそのパッケージの関数を直接呼び出さない場合に特に便利です。ブランク識別子がないと、Goは未使用のパッケージをインポートしているとしてコンパイルエラーを出力します。

ブランク識別子はGoに対して、「このパッケージをサイドエフェクト(副作用)のためにインポートするが、コード内で直接参照することはない」と伝えます。これにより、インポートをクリーンに保ちつつ、必要な初期化動作を実行させることができます。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

チートシート

エクスポートされた関数を使用せずに、副作用のためにパッケージをインポートするには、ブランク識別子 _ を使用します。

import _ "database/sql/driver"

これにより、エクスポートされた識別子を使用することなく、パッケージをインポートしてその初期化コードを実行できます。これは、パッケージが他のシステムに自身を登録したり、セットアップタスクを実行したりする必要がある場合に便利です。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン