MatchFile returns false if the name contains a $GOOS or $GOARCH suffix which does not match the current system. The recognized name formats are:
name_$(GOOS).* name_$(GOARCH).* name_$(GOOS)_$(GOARCH).* name_$(GOOS)_test.* name_$(GOARCH)_test.* name_$(GOOS)_$(GOARCH)_test.*
An exception: if GOOS=android, then files with GOOS=linux are also matched.
If tags["*"] is true, then MatchFile will consider all possible GOOS and GOARCH to be available and will consequently always return true.
ReadComments is like ioutil.ReadAll, except that it only reads the leading block of comments in the file.
ReadImports is like ioutil.ReadAll, except that it expects a Go file as input and stops reading the input once the imports have completed.
ShouldBuild reports whether it is okay to use this file, The rule is that in the file's leading run of // comments and blank lines, which must be followed by a blank line (to avoid including a Go package clause doc comment), lines beginning with '// +build' are taken as build directives.
The file is accepted only if each such line lists something matching the file. For example:
// +build windows linux
marks the file as applicable only on Windows and Linux.
If tags["*"] is true, then ShouldBuild will consider every build tag except "ignore" to be both true and false for the purpose of satisfying build tags, in order to estimate (conservatively) whether a file could ever possibly be used in any build.