Shi*_*iSi 5 go command-line-arguments
对于快速黑客攻击,我更喜欢使用go run prog.go ...而不是先构建可执行文件.但是,我正在处理的程序应该使用另一个go-file作为参数.因此,go run编译后的二进制文件表现不同:
go run prog.go foo.go
Run Code Online (Sandbox Code Playgroud)
将尝试执行两个go文件,而
go build prog.go && ./prog foo.go
Run Code Online (Sandbox Code Playgroud)
将正确地将我的文件作为输入(预期的行为).现在我可以像这样传递额外的args go run ... -- foo.go,但是因为--文件的位置os.Args在go run prog.go -- foo.go和之间不同./prog foo.go.任何简单的方案?我想避免进行完整的标记处理.我应该放弃并坚持编译版本吗?
这是不可能的。这是命令的来源:
for i < len(args) && strings.HasSuffix(args[i], ".go") {
i++
}
files, cmdArgs := args[:i], args[i:]
Run Code Online (Sandbox Code Playgroud)
您可以使用go install代替go build. 这会将您的可执行文件放在您的$GOPATH/bin文件夹中(我不喜欢将二进制文件放在同一个文件夹中,因为有时我不小心将它添加到 git 中)。但其实差别不大。
您可能要考虑的另一个选项是rerun. 每当您更改文件时,它都会自动重新编译并运行您的代码:
rerun path/to/your/project foo.go
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |