Для быстрого взлома я предпочитаю использовать go run prog.go ...
вместо того, чтобы сначала создавать исполняемый файл. Тем не менее, программа, над которой я работаю, должна принимать в качестве аргумента другой файл go-файла. Как следствие, go run
и скомпилированные бинарные ведут себя по-разному:Передача .go-файла в качестве дополнительного аргумента для `go run`
go run prog.go foo.go
будет пытаться выполнить оба идут-файлы, в то время как
go build prog.go && ./prog foo.go
правильно взять мой файл в качестве входных данных (предполагаемое поведение). Теперь я могу передать дополнительные аргументы, подобные этому go run ... -- foo.go
, но тогда из-за --
позиция файла отличается от os.Args
между go run prog.go -- foo.go
и ./prog foo.go
. Любое простое решение? Я бы хотел избежать полной обработки флагов. Должен ли я просто сдаться и придерживаться скомпилированной версии?
Исправить ошибку 'go/cmd/run.go' будет очень мало; Я рекомендую обсудить его в списке орехов и отправить CL. Я не вижу никакого способа обойти это. \ –
Учитывая минимальные издержки 'go build prog.go && ./prog foo.go' по сравнению с' go run prog.go foo.go' (который также компилируется и связывает вашу программу) Я бы просто придерживался версии «build». – Volker
Да; Я использую 'go build' слишком большую часть времени из-за всех проблем с' go run', но действительно раздражающая вещь IMO заключается в том, что она записывает неподписанный файл в ваш исходный каталог. Хорошая версия 'go run' определенно была бы полезной. –