constraint
packagestandard libraryThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
Documentation¶
Overview¶
Package constraint implements parsing and evaluation of build constraint lines.Seehttps://golang.org/cmd/go/#hdr-Build_constraints for documentation about build constraints themselves.
This package parses both the original “// +build” syntax and the “//go:build” syntax that was added in Go 1.17.Seehttps://golang.org/design/draft-gobuild for details about the “//go:build” syntax.
Index¶
Constants¶
This section is empty.
Variables¶
This section is empty.
Functions¶
funcGoVersion¶added ingo1.21.0
GoVersion returns the minimum Go version implied by a given build expression.If the expression can be satisfied without any Go version tags, GoVersion returns an empty string.
For example:
GoVersion(linux && go1.22) = "go1.22"GoVersion((linux && go1.22) || (windows && go1.20)) = "go1.20" => go1.20GoVersion(linux) = ""GoVersion(linux || (windows && go1.22)) = ""GoVersion(!go1.22) = ""
GoVersion assumes that any tag or negated tag may independently be true,so that its analysis can be purely structural, without SAT solving.“Impossible” subexpressions may therefore affect the result.
For example:
GoVersion((linux && !linux && go1.20) || go1.21) = "go1.20"
funcIsGoBuild¶
IsGoBuild reports whether the line of text is a “//go:build” constraint.It only checks the prefix of the text, not that the expression itself parses.
funcIsPlusBuild¶
IsPlusBuild reports whether the line of text is a “// +build” constraint.It only checks the prefix of the text, not that the expression itself parses.
funcPlusBuildLines¶
PlusBuildLines returns a sequence of “// +build” lines that evaluate to the build expression x.If the expression is too complex to convert directly to “// +build” lines, PlusBuildLines returns an error.
Types¶
typeExpr¶
type Expr interface {// String returns the string form of the expression,// using the boolean syntax used in //go:build lines.String()string// Eval reports whether the expression evaluates to true.// It calls ok(tag) as needed to find out whether a given build tag// is satisfied by the current build configuration.Eval(ok func(tagstring)bool)bool// contains filtered or unexported methods}
An Expr is a build tag constraint expression.The underlying concrete type is *AndExpr, *OrExpr, *NotExpr, or *TagExpr.
typeSyntaxError¶
type SyntaxError struct {Offsetint// byte offset in input where error was detectedErrstring// description of error}
A SyntaxError reports a syntax error in a parsed build expression.
func (*SyntaxError)Error¶
func (e *SyntaxError) Error()string