不正确的软件包名称不会在构建时引发错误

时间:2018-11-28 13:57:15

标签: go

使用错误的程序包名称和示例main.go来考虑示例hello world

package test

import "fmt"

func main() {
    fmt.Println("hello world")
}

go build main.go上,由于包名称不正确,构建无法正常工作(不生成可执行文件)。但是为什么没有抛出错误?

1 个答案:

答案 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?