当“Go run”-ng时,避免在主包中输入所有go文件

时间:2014-01-04 03:10:41

标签: go

如果main包中有多个.go文件,我需要在执行go run时全部列出。

所以当我有main.goa.gob.go并且它们都属于主包时,我需要输入go run main.go a.go b.go才能使用里面的函数和结构其他2个去文件。但是,go build命令足够智能,可以自动将所有文件链接在一起。

我是否误解了有关Go的内容,或者这是否正常(在执行main时列出go run包中的所有文件)?

2 个答案:

答案 0 :(得分:4)

简短的回答是:你需要全部列出来。如果你绝望的话,你可以用shell技巧来做到这一点。我通常只是编写一个shell脚本到go build然后运行生成的可执行文件,因为它太烦人了。

# this works unless you have _test.go files
go run *.go

# if you really want to... enable extended glob
shopt -s extglob
# so you can do something like this (matches all .go except *_test.go files)
go run !(*_test).go

查看此主题:https://groups.google.com/forum/#!topic/golang-nuts/EOi0VAQNA4c

答案 1 :(得分:2)

如果您的来源是$ GOPATH / src 如在

$GOPATH/src/somedir/main.go
$GOPATH/src/somedir/a.go
$GOPATH/src/somedir/b.go

做“go install somedir”将编译并安装somedir二进制文件到$ GOPATH / bin

无需单独列出文件

“go install”会找到它自己的所有文件。

我的常见工作周期是go(来自我的bash提示符): $ clear;去安装myproj&& $ GOPATH / bin中/的Myproj

,清除屏幕,构建并安装“myproj”,然后运行它

所以,在我更改代码后,我只需按Ctrl-C,向上箭头,然后输入。

整个循环时间约为1秒(小型启动时间)