Skip to content

Goのコンパイラディレクティブ

Goにはコンパイラへ指示するための特殊なディレクティブが存在する。リストは以下にまとまっている。

関数コメントにディレクティブを記述する。ディレクティブは //go: のようにスペースを含めてはいけない。アセンブリで書いている場合は関数宣言の前に書く。

//go:noinline
func waserror() bool
// Handle returns an error.
//
//go:noinline
func Handle() error {
...
}

下の例でみたように、ドキュメントコメントに含まれていても有効になる。ディレクティブはドキュメントとしては出力されない。

スタックの境界チェックを挿入しない。

該当する関数をインライン展開しないフラグ。インライン展開されるかどうかは以下のコマンドで調べる。

Terminal window
go tool compile -S file.go