关于main包放在哪的问题

关于main包放在哪的问题

据我所知,目前大部分人都会将main包直接放在src根目录,运行时使用 go run xxx.go 这种方式。当然如果需要生成可执行文件,就通过go build在当前目录生成一个可执行文件。LiteIDE也是这么做的(已经和作者提建议了)。

然而,将main包直接放在src根目录,不能用go install 安装成标准的 src pkg bin这样的结构。如果一个项目中有多个server呢?你这样就没法弄了,得分开成几个项目;然而这几个server之间可能有不少需要共享的东西,这样可能又得增加GOPATH。

另外,虽然main包文件直接在src根目录下可以通过go build生成可执行文件,但默认是生成在当前目录下的(可能污染源码),而不会生成到bin目录(除非自己参数指定)。实际上官方都建议将GOPATH的bin目录加入PATH(当然,好像这么做的不多)

我建议直接通过go install生成二进制文件。即使项目中有多个server(可能还有其他客户端测试工具),二进制文件可能会比较多(即可能多个main包),这个时候,main单独放在目录中很有用。go install效果就有了。

可能有一个疑问:go install需要指定GOPATH,很麻烦。可以使用http://blog.studygolang.com/46.html上介绍的方式。

在golang-nuts上有人讨论了这个问题
Running multi-file main package
有人回复说:go run是给那些需要快速(测试用)和dirty code使用的,这些代码是不会是实际项目,也不会在GOPATH中。

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...

发表评论

电子邮件地址不会被公开。