繁体   English   中英

Go 不在主文件中的文件未运行 package

[英]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 运行命令

go run main2/main2.go

它抛出错误:

package 命令行参数不是主要的 package

有人可以帮忙吗?

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

因此,尝试在 main2/main2.go 文件中将 package 命令行参数更改为package main

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

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 文档:

程序执行 一个完整的程序是通过链接一个单独的、未导入的 package 和它导入的所有包来创建的,这个包被称为主 package。 main package 必须有 package 名称 main 并声明一个 function main 不带 arguments 并且不返回任何值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM