# Functions
GoVersionは与えられたビルド条件によって暗黙的に指定される最小のGoバージョンを返します。 条件式にGoバージョンタグがない場合、GoVersionは空の文字列を返します。
例:
GoVersion(linux && go1.22) = "go1.22" GoVersion((linux && go1.22) || (windows && go1.20)) = "go1.20" => go1.20 GoVersion(linux) = "" GoVersion(linux || (windows && go1.22)) = "" GoVersion(!go1.22) = ""
GoVersionは、任意のタグまたは否定されたタグが独立してtrueである可能性があると仮定しています。 そのため、解析はSATソルバーなしで純粋に構造的に行われます。「不可能」とされる部分式は結果に影響する可能性があるためです。
例:
GoVersion((linux && !linux && go1.20) || go1.21) = "go1.20".
IsGoBuildは、テキストの行が「//go:build」の制約であるかどうかを報告します。 これは、テキストのプレフィックスのみをチェックし、式自体の解析は行いません。.
IsPlusBuildはテキストの行が "// +build" 制約であるかどうかを報告します。 これはテキストの接頭辞のみをチェックし、式そのものの解析は行いません。.
Parseは、形式「//go:build ...」または「// +build ...」の単一のビルド制約行を解析し、対応するブール式を返します。.
PlusBuildLinesはビルド式xに評価される「// +build」の行のシーケンスを返します。 式が直接「// +build」の行に変換できるほど複雑でない場合、PlusBuildLinesはエラーを返します。.
# Structs
AndExprは式X && Yを表します。.
NotExprは式!X(Xの否定)を表します。.
OrExprはX || Yを表します。.
SyntaxErrorは解析されたビルド式の構文エラーを報告します。.
TagExprは、単一のタグTagのための [Expr] です。.
# Interfaces
Exprはビルドタグの制約式です。 内部の具体的な型は*[AndExpr]、*[OrExpr]、*[NotExpr]、または*[TagExpr] です。.