首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何“运行”在主包中有多个文件的项目?

如何“运行”在主包中有多个文件的项目?
EN

Stack Overflow用户
提问于 2015-01-22 12:51:11
回答 7查看 102.2K关注 0票数 190

我在main包中只有一个名为main.go的文件。因为代码不可重用,所以我希望将代码的一部分分离到不同的文件中,但在相同的包中。

如何在不创建单独的包的情况下将main.go的内容拆分为多个文件?

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

代码语言:javascript
复制
ls foo

# output:
main.go
bar.go

bar.go

  • 文件

代码语言:javascript
复制
package main

import "fmt"

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

main.go

  • 文件

代码语言:javascript
复制
package main

func main() {
  Bar()
}

当我运行go run main.go时,它为我提供了:

代码语言:javascript
复制
# command-line-arguments
./main.go:4:2: undefined: Bar
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-01-22 12:59:28

代码语言:javascript
复制
go run .

也可以在windows上运行。

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

代码实际上是可以工作的。问题是我应该运行以下命令,而不是运行go run main.go

代码语言:javascript
复制
go run *.go
票数 254
EN

Stack Overflow用户

发布于 2015-01-22 14:44:20

更新2018年8月,与Go 1.11,一个section "Run"声明:

go run命令现在允许单个导入路径、目录名或与单个包匹配的模式。

这允许go run pkggo run dir,最重要的是go run .

原答案2015年1月

正如在"How to compile Go program consisting of multiple files?“中提到的,go run需要一个文件列表,因为它”编译并运行包含已命名的Go源文件的main包“。

因此,您当然可以使用go run将您的main包拆分为几个文件。

这与go build/go install不同,后者需要包名(而不是go文件名)。

一个简单的go build将产生一个以父文件夹命名的可执行文件。

注意,作为illustrated by this threadgo run *.go不能在Windows CMD会话中工作,因为shell doesn't do wildcard expansion

票数 73
EN

Stack Overflow用户

发布于 2019-07-26 18:38:49

在我看来,这个问题的最佳答案隐藏在顶部答案的评论中。

只需运行以下命令:

代码语言:javascript
复制
go run .

这将运行main包中的所有文件,但不会给出如下错误消息吗?

代码语言:javascript
复制
go run: cannot run *_test.go files (main_test.go)

致敬@BarthesSimpson

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28081486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档