hen*_*g77 6 code-organization project-organization organization go
我正在为一个多平台项目寻找一个好的项目组织,其中包含用Go编写的多个组件.我知道http://golang.org/doc/code.html推荐的布局,但是布局建议似乎不符合我的要求.
项目组成部分是:
我的要求是:
我目前的做法:
project/ (this is the repository root)
server/
server.go (package main)
src/
server/
package1/
package1.go
...
client/
client.go (package main)
src/
client/
package2/
package2.go
...
lib/
src/
lib/
lib.go
...
client-ios/
...
client-android/
...
Run Code Online (Sandbox Code Playgroud)
要构建,我使用Makefile
它有效,但感觉非常笨重,与推荐的代码布局完全不同.
这是我正在考虑的替代方案:
project/ (this is the repository root)
gospace/
src/
server/...
client/...
lib/...
client-ios/
...
client-android/
...
Run Code Online (Sandbox Code Playgroud)
有了这个布局,我有一个GOPATH(gospace /),不需要klunky Makefile.然而,组件不像第一替代方案那样整齐地分离(即,通过顶级目录).
我的问题:哪种项目布局最适合我的要求和Go约定和工具支持?有没有更好的选择,我还没有看到?
这就是我组织类似项目的方式:
$GOPATH/src/project-root/
lib.go
lib_test.go
server/
server.go
server_test.go
main/
server.go // package main; import "project-root/server"
client/
client.go
client_test.go
main/
client.go //package main; import "project-root/client"
client-ios/
....
client-android/
....
Run Code Online (Sandbox Code Playgroud)
虽然大多有server/server.go
和client/client.go
作为package main
应该工作,最好还是分开吧,所以你可以嵌入在其他项目中的客户机/服务器.