为了快速破解,我更喜欢使用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。有什么简单的解决办法吗?我想避免进行完整的标志处理。我应该放弃并坚持编译版本吗?
1 回答
MYYA
TA贡献1868条经验 获得超4个赞
这是不可能的。这是命令的来源:
for i < len(args) && strings.HasSuffix(args[i], ".go") {
i++
}
files, cmdArgs := args[:i], args[i:]
您可以使用go install代替go build. 这会将您的可执行文件放在您的$GOPATH/bin文件夹中(我不喜欢将二进制文件放在同一个文件夹中,因为有时我不小心将它添加到 git 中)。但其实差别不大。
您可能要考虑的另一个选项是rerun. 每当您更改文件时,它都会自动重新编译并运行您的代码:
rerun path/to/your/project foo.go
- 1 回答
- 0 关注
- 207 浏览
添加回答
举报
0/150
提交
取消