為了快速破解,我更喜歡使用go run prog.go ...而不是首先構建可執行文件。但是,我正在處理的程序應該以另一個 go-file 作為參數。因此,go run編譯后的二進制文件的行為有所不同:go run prog.go foo.go將嘗試執行兩個 go 文件,而go build prog.go && ./prog foo.go將正確地將我的文件作為輸入(預期的行為)?,F在,我可以通過這樣的額外的參數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 關注
- 221 瀏覽
添加回答
舉報
0/150
提交
取消