Go file not 运行 不在主包中

Go file not running which is not in main package

我有一个非常简单的 Go 项目设置。 在根目录中,我有 go.mod 文件和 main.go 以及一个名为 main2 的文件夹。 main2 文件夹内有 main2.go 个文件。

/
|_ go.mod
|_ main.go
|_ main2
   |_ main2.go

我正在尝试从根目录 运行 执行 运行 命令

go run main2/main2.go

它抛出错误:

package command-line-arguments is not a main package

有人可以帮忙吗?

您的 main2.go 文件的包必须是 main。当您的项目中有一个 main 包和一个函数 main 时,编译器知道它将被编译为可执行文件,而不是库。

所以尝试在 main2/main2.go 文件中将 package command-line-arguments 更改为 package main

Golang 进入可执行文件的入口点是通过单个 main() 函数。如果你想 运行 单个可执行文件的不同逻辑路径,你可以使用 main() 作为使用命令行参数到其他包的路由函数:

package main

import (
    "os"
    // Your child packages get imported here.
)

func main() {

    // The first argument
    // is always program name
    // So os.Args[1] is the first dynamic argument
    arg1 := os.Args[1]

    // use arg1 to decide which packages to call
    if arg1 == "option1" {
        // option1 code executes here.
    }
    if arg1 == "option2" {
        // option2 code executes here.
    }
}

然后你可以运行你的程序,比如:

go run main.go option1

来自golang documentation:

Program execution A complete program is created by linking a single, unimported package called the main package with all the packages it imports, transitively. The main package must have package name main and declare a function main that takes no arguments and returns no value.