Goのコンパイラディレクティブ
Goにはコンパイラへ指示するための特殊なディレクティブが存在する。リストは以下にまとまっている。
関数コメントにディレクティブを記述する。ディレクティブは //go: のようにスペースを含めてはいけない。アセンブリで書いている場合は関数宣言の前に書く。
//go:noinlinefunc waserror() bool
// Handle returns an error.////go:noinlinefunc Handle() error { ...}下の例でみたように、ドキュメントコメントに含まれていても有効になる。ディレクティブはドキュメントとしては出力されない。
よく使うディレクティブ
Section titled “よく使うディレクティブ”nosplit
Section titled “nosplit”スタックの境界チェックを挿入しない。
noinline
Section titled “noinline”該当する関数をインライン展開しないフラグ。インライン展開されるかどうかは以下のコマンドで調べる。
go tool compile -S file.go