使用错误的程序包名称和示例main.go
来考虑示例hello world
package test
import "fmt"
func main() {
fmt.Println("hello world")
}
在go build main.go
上,由于包名称不正确,构建无法正常工作(不生成可执行文件)。但是为什么没有抛出错误?
答案 0 :(得分:3)
程序包名称test
正确,根据Spec: Package clause:有效。
PackageClause = "package" PackageName .
PackageName = identifier .
test
是有效的Go标识符。
关于go build main.go
的作用是什么?
通常,您将软件包列出到go build
,但也可以列出.go
源文件,就像在示例中一样。
引用go help build
:
如果要构建的参数是.go文件列表,则build会将其视为指定单个程序包的源文件列表。
因此go build
只是构建了test
包,其中包含一个main.go
源文件。将main()
函数添加到非main
的程序包中不是错误。
为什么什么都不发生:如果一切正常,go build
不产生任何输出,如果不正确,则输出错误。将go build
应用于非main
程序包仅“检查”该程序包是否可以构建,但是会丢弃结果。请检查What does go build build?