如何寫出優雅的 Golang 代碼python
存放本項目中,能夠被外部應用直接調用的代碼庫git
即通常/pkg中存放的是公有庫github
私有代碼存放在internal中,golang
不建議使用 src存放項目,web
(1) go語言的項目默認都會在 $GOPATH/src目錄下,若是當前的項目中還有src目錄,則有django
$GOPATH/src/github.com/test/project/src/code.gosegmentfault
這樣的目錄,看起來很是奇怪api
(2) src目錄是大多數 Java使用者的開發經驗架構
(1) 對於框架或者庫,將代碼平鋪在項目根目錄下很正常,
例如:
若是沒有平鋪,想要引入一個使用 pkg目錄結構的框架時候,須要使用
github.com/test/project/pkg/somepkg
若是將全部代碼平鋪到根目錄,則引用路徑爲
github.com/test/project/pkg/somepkg
(2) 對於一個go服務中,使用平鋪方式不是很是合適
存放全部的可執行文件
該目錄下的每個子目錄,都包含了可執行文件
不該該將過多的代碼放入,cmd中
存放當前項目,對外提供的全部api接口文件
api目錄下可能包含有二級目錄,例如:
api/protobuf-spec
api/thrift-spec
api/http-spec
目錄 scripts中存放一些項目運行的腳本
經過 Makefile 調用這些腳本
web框架的常見架構方式爲 MVC 分層,即將服務中的不一樣組件分爲
Model, View, Control 三層
下面是一個常見的python django項目結構
按層拆分的好處是:
(1) 強調了按層劃分職責
(2) 扁平的命名空間
(3) 單體服務的場景
divide-by-responsibility