Golang主包中的多个文件

我目前有一个名为main.go主包中有一个文件。 如何将main.go的内容main.go成多个文件而不创build单独的包,因为代码是不可重用的。

我想要一个像这样的目录结构:

 $ ls foo main.go bar.go 

bar.go

 package main import "fmt" func Bar() { fmt.Println("Bar") } 

然后在main.go

 package main func main() { Bar() } 

上面的代码实际上工作。 问题是我需要运行

 go run *.go 

代替

 go run main.go 

如“ 如何编译由多个文件组成的Go程序? ”中所提到的那样, go run期望得到一个文件列表,因为它“编译并运行包含指定的Go源文件的main包”。
所以你当然可以拆分你的main包在几个文件中go run

这不同于go build/go install期望包名称(而不是去文件名)。
一个简单的go build会产生一个以父文件夹命名的可执行文件。

请注意, 如此线程所示 , go run *.go在Windows CMD会话中不起作用 ,因为shell不执行通配符扩展 。