我在主包中有一个名为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
更新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不进行通配符展开。
更新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不进行通配符展开。