サーチ…


構文

  • // +ビルドタグ

備考

ビルドタグは、コード内の特定のファイルを条件付きでビルドするために使用されます。ビルドタグは、明示的に含まれていないかぎり、ビルドしたくないファイルを無視したり、あらかじめ定義されたビルドタグを使用して、特定のアーキテクチャやオペレーティングシステム上にのみファイルをビルドすることができます。

ビルドタグは、あらゆる種類のソースファイル(Goだけでなく)に表示されますが、ファイルの先頭近くに空白行やその他の行コメントの前に表示する必要があります。これらの規則は、Goファイルでは、パッケージ句の前にビルド制約がなければならないことを意味します。

一連のビルドタグのあとに空白行を続ける必要があります。

個別の統合テスト

ビルド制約は通常、データベースやネットワークアクセスなどの外部リソースを必要とする統合テストから通常の単体テストを分離するために使用されます。これを行うには、カスタムビルド制約をテストファイルの先頭に追加します。

// +build integration
 
package main
 
import (
    "testing"
)
 
func TestThatRequiresNetworkAccess(t *testing.T) {
    t.Fatal("It failed!")
}

次のgo test呼び出しが使用されていない限り、テストファイルはビルド実行可能ファイルにコンパイルされません。

go test -tags "integration"

結果:

$ go test
?       bitbucket.org/yourname/yourproject    [no test files]
$ go test -tags "integration"
--- FAIL: TestThatRequiresNetworkAccess (0.00s)
        main_test.go:10: It failed!
FAIL
exit status 1
FAIL    bitbucket.org/yourname/yourproject    0.003s

アーキテクチャに基づいた実装の最適化

私たちは整列していないサポートするだけのアーキテクチャ用の単純なXOR関数を最適化することができます/(ここでは範囲外であるXORコードの実際例えば、参照機能を定義する2つのファイルを作成し、ビルドの制約でそれらをつけることで読み書きcrypto/cipher/xor.go標準ライブラリのcrypto/cipher/xor.go ):

// +build 386 amd64 s390x

package cipher

func xorBytes(dst, a, b []byte) int { /* This function uses unaligned reads / writes to optimize the operation */ }

その他のアーキテクチャの場合:

// +build !386,!amd64,!s390x

package cipher

func xorBytes(dst, a, b []byte) int { /* This version of the function just loops and xors */ }


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow