这里是简单的go应用程序。如果我运行以下代码,我将“运行:无法运行非主程序包”错误。
package zsdfsdf
import (
"fmt"
)
func Main() {
fmt.Println("sddddddd")
}
修复它,我只需要将包命名为main。但我不明白为什么我需要这样做。我应该可以随心所欲地命名包装。
另一个问题,我知道主要功能是程序的切入点,你需要它。否则它将无法工作。但是我看到一些没有主要功能的代码仍然可以使用。
点击此链接,页面底部的示例没有使用包main和main函数,它仍然有效。只是好奇为什么。
https://developers.google.com/appengine/docs/go/gettingstarted/usingdatastore
答案 0 :(得分:26)
每个go程序的入口点是main.main
,即名为main的包中称为main的函数。你必须提供这样一个主要的包。
main
包,其中包含main
函数。因此,您不能自己编写。
答案 1 :(得分:10)
您需要使用主程序包,以go开头的常见错误是
package Main
代替
package main
答案 2 :(得分:7)
您需要在app.yaml文件中指定您的应用访问点是什么。看看here。您需要指定:
application: zsdfsdf
另见上述链接:
“注意:在编写独立的Go程序时,我们会放置此代码 在包主。 Go App Engine Runtime提供了一个特殊的主要功能 包,所以你应该把HTTP处理程序代码放在你的包中 选择(在这种情况下,你好)。“
你是对的,所有Go程序都需要Main
方法。但它由Google App Engine提供。这就是您提供的示例有效的原因。你的例子不适用于本地(不适用于GAE)。
答案 3 :(得分:2)
为了避免这个问题,您可以修改代码如下
package main
import (
"fmt"
)
func main() {
fmt.Println("sddddddd")
}
将包重命名为“main”并将函数重命名为“main”而不是“Main”。
答案 4 :(得分:1)
一种避免此错误的解决方案是通过将somefilename.go
添加为entrypopin的第一行来将入口点package main
文件定义为主软件包
package main
// import statements
import "fmt"
// code below