代码之家  ›  专栏  ›  技术社区  ›  Krishnadas PC

包名不正确,生成时不引发错误

go
  •  0
  • Krishnadas PC  · 技术社区  · 6 年前

    考虑使用错误的包名和名为 main.go

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

    go build main.go 由于包名不正确,生成不起作用(不生成可执行文件)。但为什么不抛出错误呢?

    1 回复  |  直到 6 年前
        1
  •  3
  •   icza    6 年前

    包名称 test 不正确,根据 Spec: Package clause:

    PackageClause  = "package" PackageName .
    PackageName    = identifier .
    

    测试 是有效的Go标识符。

    至于做什么 go build main.go 是吗?

    一般情况下,您列出的包 go build ,但您也可以列出 .go 源文件,正如在您的示例中一样。

    引用自 go help build :

    如果要生成的参数是.go文件的列表,则生成会将它们视为指定单个包的源文件列表。

    所以 开始构建 简单地建立你的 测试 包,由单个 main.go 源文件。添加一个 main() 对非 main .

    至于“什么都没发生”的原因: 开始构建 如果一切正常,则不生成输出;如果有不正确的地方,则输出错误。 开始构建 适用于非- 主要的 包只是“检查”包是否可以生成,但它会丢弃结果。请检查一下 What does go build build?