Golang ビルドタグを追加する方法

Golang Birudotaguwo Zhui Jiasuru Fang Fa



Go のビルド タグは、特定のビルド制約に基づいてビルド プロセス中に特定のコードを条件付きで含めたり除外したりできる強力な機能です。この柔軟性により、さまざまなオペレーティング システム、アーキテクチャ、またはその他の環境固有の要件に合わせてプラットフォーム固有のビルドを作成できます。ビルド タグは、ソース ファイルの先頭、パッケージ宣言のすぐ上に追加される特別なコメントです。これらのタグは、コンパイル プロセス中にそのファイル内のコードを処理する方法について Go ビルド システムに指示を提供します。

例 1: Linux システム用の Golang ビルド タグを追加する

Linux オペレーティング システムをターゲットにするには、「// +build linux」ビルド タグを追加します。

// Linux をビルドする

// +Linux をビルドする

パッケージ 主要

輸入 「fmt」

機能 主要 () {

fmt プリントイン ( 「Hello Linux システムの例」 )

}

ここでは、ターゲット システムが Linux の場合にのみコードをビルドするように指定するビルド制約を Go に設定します。その後、パッケージを定義し、コードに必要なステートメントをインポートします。次に、main() メソッドに入り、「fmt」パッケージの「Println」呼び出しを使用してメッセージを出力します。







したがって、Linux オペレーティング システムでは、次のメッセージがコンソールに正常に表示されます。





例 2: Windows システム用の Golang ビルド タグを追加する

Windows プラットフォームでコードを実行したいだけの場合は、ファイルの先頭に「// +build windows」ビルド タグを使用します。これにより、Windows が対象プラットフォームである場合にのみコードがビルドに組み込まれるようにすることができます。





// +ウィンドウを構築する

パッケージ 主要

輸入 「fmt」

機能 主要 () {

fmt プリントイン ( 「こんにちは、Windows の例です!」 )

}

ここでは、「// +build windows」ビルド制約を使用して、Windows プラットフォーム用にビルドする場合にのみコードがコンパイルおよび実行されるようにします。その後、package および import 修飾子を使用して、コードに必要なパッケージをインクルードします。次に、Golang でウィンドウのタグを構築するときに println() 関数を使用してステートメントを出力する main() 関数が来ます。

このプログラムを Windows システム上でビルドして実行すると、「Hello, Windows example!」というメッセージが表示されます。コンソールへのメッセージ。ビルドの制約により、プログラムは他のオペレーティング システムではビルドまたは実行されないことに注意してください。



例 3: Windows 以外のシステム用の Golang ビルド タグを追加する

逆に、Windows 用にビルドするときにコードを除外したい場合は、「!」を使用できます。ビルドタグに感嘆符を付けます。

// +!windows をビルドする

パッケージ 主要

輸入 「fmt」

機能 主要 () {

fmt プリントイン ( 「こんにちは、Windows を除く!」 )

}

ここでは、コードを Windows 以外のプラットフォームでビルドして実行する必要があることを示す制約ディレクティブを作成します。 Windows の前にある感嘆符 (!) は、このコードが Windows を除くすべてのプラットフォームに含まれる必要があることを示します。次に、前の関数と同じプログラムを実行します。最初にパッケージを追加し、main() 関数を呼び出して、println() 関数内で渡されるメッセージを実行します。

したがって、出力によりオペレーティング システム コンソールにメッセージが生成されます。ビルドの制約により、Windows オペレーティング システムでは実行できないことに注意してください。

例 4: OR ロジックを使用して Golang ビルド タグを追加する

Windows または Linux をターゲットとする場合にコードを含めるには、「// +build windows Linux」ビルド タグを使用できます。

// +Windows Linux をビルドする

パッケージ 主要

輸入 「fmt」

機能 主要 () {

fmt プリントイン ( 「Windows または Linux ユーザーの皆さん」 )

}

ここでは、Windows と Linux の両方のオペレーティング システム用にビルドすることを目的とした論理 OR を使用してビルド制約を適用します。 「// +build windows Linux」行は、ターゲット プラットフォームが Windows または Linux の場合に、このファイルをビルドに含める必要があることを指定します。次に、基本的な入出力機能を提供する Go 標準ライブラリから「fmt」パッケージをインポートします。 main 関数では、「fmt」パッケージの Println() 関数を使用して、「Windows または Linux ユーザーの皆様」という文字列ステートメントを出力します。

したがって、出力は次のように取得されます。 Windows または Linux オペレーティング システムを使用しても、同じメッセージが生成されます。

例 5: AND ロジックを使用して Golang ビルド タグを追加する

複数のビルド タグを指定して、より複雑な条件を作成できます。 「// +build windows,linux」コマンドを使用して、Linux と Windows の両方のコードを生成できます。

// +ウィンドウを構築,386

パッケージ 主要

輸入 「fmt」

機能 主要 () {

fmt プリントイン ( 「これは 32 ビット Windows です」 )

}

ここで定義されているビルド制約は「// +build windows,386」で、ターゲット プラットフォームが 32 ビット Windows の場合に Go ファイルをビルドに含める必要があることを指定します。 Windows と 386 の間にカンマ「,」を使用し、論理 AND 演算子として機能することに注意してください。これは、コードをビルドに含めるには両方の条件が満たされる必要があることを意味します。

次に、前の例と同様に、Go 標準ライブラリから「fmt」パッケージをインポートし、出力に Println 関数() を使用します。プログラムの main() 関数があり、ステートメントが引数として println() 関数に渡されます。

このプログラムを 32 ビット Windows システム上でビルドして実行すると、指定されたメッセージが出力として表示されます。ただし、別のオペレーティング システムまたはアーキテクチャ上でビルドして実行しようとすると、ビルドには含まれません。

例 6: 特定の関数に Golang ビルド タグを追加する

さらに、ビルド タグをファイル内の特定の関数に適用することもできます。ビルドの制約により、特定の関数を条件付きで含めたり削除したりできるようになりました。

パッケージ 主要

輸入 「fmt」

機能 主要 () {

fmt プリントイン ( 「こんにちは、楽しんでください!」 )

Windowsメッセージを印刷する ()

}

// +ウィンドウを構築する

機能 Windowsメッセージを印刷する () {

fmt プリントイン ( 「Windows オペレーティング システムからこんにちは」 )

}

ここで、main() メソッドに進みます。このメソッドは、「fmt」パッケージによって提供される Println() メソッドを使用して、先頭にメッセージを出力します。次に、printWindowsMessage() 関数を main() 関数の下にデプロイし、「// +build windows」ビルド制約を指定します。これは、ターゲット プラットフォームが Windows の場合にのみ関数がビルドに含まれることを示します。

最後に、Println() 関数を使用して、指定された「Windows オペレーティング システムからこんにちは」メッセージを印刷するように printWindowsMessage() 関数を設定します。

したがって、一般メッセージとプラットフォーム固有のメッセージの両方を表示する出力が取得されます。別のオペレーティング システムでビルドして実行すると、printWindowsMessage() 関数はビルドに含まれず、一般的なメッセージのみが表示されることに注意してください。

結論

Go でビルド タグを追加すると、ビルド プロセス中にコードの組み込みをカスタマイズできるようになります。ビルド タグを活用することで、プラットフォーム固有のビルドを作成し、さまざまなアーキテクチャに合わせてコードを最適化し、条件付きで特定の関数や機能を含めることもできます。