一尘不染

go run: 不能运行非主包

go

这里是简单的 go 应用程序。如果我运行以下代码,我会收到“go run: cannot run non-main package”错误。

package zsdfsdf

import (
    "fmt"
)

func Main() {
    fmt.Println("sddddddd")
}

要修复它,我只需要将包命名为main. 但我不明白为什么我需要这样做。我应该可以随心所欲地命名包。

另一个问题,我知道 main 函数是程序的入口点,你需要它。否则它将无法工作。但是我看到一些没有 main 函数的代码仍然有效。


阅读 274

收藏
2021-12-21

共2个答案

一尘不染

您需要使用主包,以 go 开头的常见错误是键入

package Main

代替

package main
2021-12-21
一尘不染

您需要在 app.yaml 文件中指定您的应用访问点是什么。您需要指定:

application: zsdfsdf

还可以从上面的链接中看到:

“注意:在编写独立的 Go 程序时,我们会将这些代码放在 main 包中。Go App Engine Runtime 提供了一个特殊的 main 包,因此您应该将 HTTP 处理程序代码放在您选择的包中(在这种情况下,hello )”

您是对的,所有 Go 程序都需要该Main方法。但它是由 Google App Engine 提供的。这就是您提供的示例有效的原因。您的示例在本地不起作用(不在 GAE 上)。

2021-12-21