将 .go-file 作为附加参数传递给 `go run`

为了快速破解,我更喜欢使用go run prog.go ...而不是首先构建可执行文件。但是,我正在处理的程序应该以另一个 go-file 作为参数。因此,go run编译后的二进制文件的行为有所不同:

go run prog.go foo.go

将尝试执行两个 go 文件,而

go build prog.go && ./prog foo.go

将正确地将我的文件作为输入(预期的行为)。现在,我可以通过这样的额外的参数go run ... -- foo.go,但在随后的因为--在文件不同的位置os.Args之间go run prog.go -- foo.go./prog foo.go。有什么简单的解决办法吗?我想避免进行完整的标志处理。我应该放弃并坚持编译版本吗?


摇曳的蔷薇
浏览 208回答 1
1回答

MYYA

这是不可能的。这是命令的来源:for i < len(args) && strings.HasSuffix(args[i], ".go") {&nbsp; &nbsp; i++}files, cmdArgs := args[:i], args[i:]您可以使用go install代替go build. 这会将您的可执行文件放在您的$GOPATH/bin文件夹中(我不喜欢将二进制文件放在同一个文件夹中,因为有时我不小心将它添加到 git 中)。但其实差别不大。您可能要考虑的另一个选项是rerun. 每当您更改文件时,它都会自动重新编译并运行您的代码:rerun path/to/your/project foo.go
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go