[英]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
程序执行 一个完整的程序是通过链接一个单独的、未导入的 package 和它导入的所有包来创建的,这个包被称为主 package。 main package 必须有 package 名称 main 并声明一个 function main 不带 arguments 并且不返回任何值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.