问题描述
在 main
包中有多个.go文件时,我需要在执行 go run时将它们全部列出
。
所以当我有 main.go
, a.go
, b.go
,它们都属于主包,我需要键入 go run main.go a.go b.go
以便在其他2个go文件中使用函数和结构。然而, go build
命令足够聪明,可以自动将所有文件链接在一起。
我误解了Go ,或者这是正常的(在执行 go run
时,列出主要
包中的所有文件)解决方案
在 main
包中有多个.go文件时,我需要在执行 go run时将它们全部列出
。
所以当我有 main.go
, a.go
, b.go
,它们都属于主包,我需要键入 go run main.go a.go b.go
以便在其他2个go文件中使用函数和结构。然而, go build
命令足够聪明,可以自动将所有文件链接在一起。
我误解了Go ,或者这是正常的(在执行 go run
时,列出主要
包中的所有文件)解决方案
简单的答案是:您需要将它们全部列出。如果你绝望,你可以用shell技巧做到这一点。我通常只是编写一个shell脚本到 go build
,然后在得到的可执行文件变得太烦人后运行。
查看此主题:
When you have multiple .go files in a main
package, i need to list them all out when doing a go run
.
So when i have main.go
, a.go
, b.go
and they all belong to the main package, i need to type go run main.go a.go b.go
in order to use functions and structs inside the other 2 go files. The go build
command however, is smart enough to link all files together automatically.
Have i misunderstood something about Go, or is this normal (listing out all the files in the main
package when doing a go run
)?
解决方案 The short answer is: you need to list them all out. You can do this with shell tricks, if you're desperate. I usually just write a shell script to go build
and then run the resulting executable, after it gets too annoying.
# 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
Check out this thread: https://groups.google.com/forum/#!topic/golang-nuts/EOi0VAQNA4c
这篇关于避免在“Go run”-ng时输入主包中的所有go文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!