【问题标题】:go run: cannot run non-main packagego run:不能运行非主包
【发布时间】:2014-07-15 06:24:53
【问题描述】:
【问题讨论】:
标签:
go
google-app-engine-go
【解决方案1】:
每个go程序的入口点是main.main,即main包中的main函数。你必须提供这样一个主包。
GAE 是个例外。他们会自动添加一个main 包,其中包含main 函数到您的项目中。因此,你不能自己写。
【解决方案2】:
需要用到主包,go开头的常见错误是输入
package Main
而不是
package main
【解决方案3】:
您需要在 app.yaml 文件中指定您的应用访问点是什么。看看here。您需要指定:
application: zsdfsdf
从上面的链接也可以看到:
"注意:在编写独立的 Go 程序时,我们会放置此代码
在主包中。 Go App Engine 运行时提供了一个特殊的 main
包,所以你应该把 HTTP 处理程序代码放在你的包中
选择(在这种情况下,你好)。”
您是正确的,所有 Go 程序都需要 Main 方法。但它是由 Google App Engine 提供的。这就是您提供的示例有效的原因。您的示例无法在本地运行(不适用于 GAE)。
【解决方案4】:
避免此错误的解决方案是通过添加 package main 作为入口点的第一行来将入口点 somefilename.go 文件定义为主包
package main
// import statements
import "fmt"
// code below
【解决方案5】:
为了避免这个问题,你可以修改代码如下
package main
import (
"fmt"
)
func main() {
fmt.Println("sddddddd")
}
将包重命名为“main”并将函数重命名为“main”而不是“Main”。