我在主包中有一个名为main.go的文件。因为代码是不可重用的,我想在不同的文件中分离代码的一部分,但在同一个包中。

如何分割main的内容。进入多个文件而不创建一个单独的包?

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

ls foo

# output:
main.go
bar.go

文件:bar.go

package main

import "fmt"

func Bar() {
  fmt.Println("Bar")
}

文件:main.go

package main

func main() {
  Bar()
}

当我跑去跑主。Go,它会给我:

# command-line-arguments
./main.go:4:2: undefined: Bar

当前回答

对于Windows,安装Cygwin并使用它代替命令提示符。“快跑。”“Go”就行了。

其他回答

更新2018年8月,Go 1.11,一节“运行”说明:

go run命令现在允许使用单个导入路径、目录名或与单个包匹配的模式。 这允许运行pkg或dir,最重要的是运行。


原答案2015年1月

正如在“如何编译由多个文件组成的Go程序?”中提到的那样,Go run需要一个文件列表,因为它“编译并运行由命名的Go源文件组成的主包”。 因此,您当然可以使用go run将主包拆分为几个文件。

这与go build/go install不同,后者需要包名(而不是go文件名)。 简单的go构建将生成以父文件夹命名的可执行文件。

注意,正如这个线程所说明的,go run *。go在Windows CMD会话中不起作用,因为shell不进行通配符展开。

2019年7月26日更新(适用于go >=1.11)

go run .

将工作在窗口以及。

原始答案(适用于非windows环境)

代码实际上是可以工作的。问题是,不要跑,要跑主路。我应该跑:

go run *.go

如果你试图在本地主机上运行多个文件,使用最新版本(1.11)中的gorilla mux。尝试使用以下2个命令。

去安装&&文件夹名-端口8081。 build && ./FolderName -port 8081。

在终端中执行命令之前,请确保您在源文件夹(即go/src/FolderName)中。

多个选项

去跑步吧。 快跑,快跑 使用Makefile在其中运行,添加任何上述命令作为构建目标。

用于测试

去测试一下。 使用Makefile和go test进行测试。作为构建目标

如前所述,你可以说go run *。go,但是对于Windows,你可以只列出脚本文件(因为*. .去也没用)-去主站。去其他。去third.go