首頁 > 後端開發 > Golang > golang目錄設定

golang目錄設定

WBOY
發布: 2023-05-22 16:08:07
原創
700 人瀏覽過

golang是一種開源程式語言,被廣泛用於網路服務開發,高並發的應用程式以及雲端服務。在使用golang編寫專案時,一個好的目錄結構可以讓專案更加清晰、易於維護,今天我們就來討論一下golang目錄結構的設定。

  1. 根據功能劃分

將項目依照功能模組進行劃分是golang中常見的一種目錄結構設定。具體做法是在專案根目錄下建立多個子目錄,每個子目錄對應一個功能模組。例如下面這個範例:

myproject/
├── cmd/
│   ├── server/
│   │   ├── main.go
│   ├── client/
│   │   ├── main.go
├── pkg/
│   ├── user/
│   │   ├── user.go
│   ├── util/
│   │   ├── util.go
├── internal/
│   ├── auth/
│   │   ├── auth.go
│   ├── db/
│   │   ├── db.go
├── vendor/
├── go.mod
├── go.sum
登入後複製

上面的結構中,我們根據專案的功能模組將其分為了cmdpkginternal三個部分:

  • cmd目錄下存放的是可以直接執行的命令列工具,例如伺服器程式server和客戶端程式 client
  • pkg目錄下存放的是專案的業務邏輯程式碼,依照功能模組劃分,例如user模組和util模組。
  • internal目錄下存放的是專案的內部程式碼,只在專案中使用,外部套件不會使用它。

值得注意的是,雖然pkginternal目錄的作用看起來很相似,但是它們的差別在於,pkg目錄下的程式碼可以被外部套件使用,而internal目錄下的程式碼只能在本專案中使用。

  1. 根據程式碼類型劃分

將程式碼依照型別劃分,是另一種常見的golang目錄結構設定方式。具體做法是在專案根目錄下建立多個子目錄,每個子目錄對應一種程式碼類型。例如下面這個範例:

myproject/
├── cmd/
│   ├── main.go
├── pkg/
│   ├── http/
│   │   ├── server.go
│   │   ├── router.go
│   ├── database/
│   │   ├── db.go
│   ├── log/
│   │   ├── log.go
├── vendor/
├── go.mod
├── go.sum
登入後複製

上面的結構中,我們根據程式碼類型將其分成了cmdpkgvendor三個部分:

  • cmd目錄下的是可執行程式的入口文件,例如main.go
  • pkg目錄下方依照程式碼類型劃分,例如將HTTP相關的程式碼放在http目錄下,將資料庫相關的程式碼放在database 目錄下等等。
  • vendor目錄下存放的是專案所依賴的第三方套件。

相對於按照功能劃分的方式,這種按照程式碼類型劃分的方式更加靈活,但是可能會導致目錄結構比較深,需要更多的時間去查找程式碼所在的位置。

  1. 根據MVC模式進行分割

大多數Web框架都採用了MVC(Model-View-Controller)模式,將程式依照這個模式分割也是很常見的一種golang目錄結構設定方式。例如下面這個例子:

myproject/
├── cmd/
│   ├── main.go
├── pkg/
│   ├── models/
│   │   ├── user.go
│   ├── views/
│   │   ├── index.gohtml
│   ├── controllers/
│   │   ├── user.go
├── vendor/
├── go.mod
├── go.sum
登入後複製

上面的結構中,我們根據MVC模式將其分為了modelsviewscontrollers三個部分:

  • models目錄中存放的是模型層程式碼,通常是與資料庫打交道的程式碼。
  • views目錄中存放的是視圖層程式碼,通常是網頁模板等。
  • controllers目錄中存放的是控制器層程式碼,負責將模型層和視圖層連接起來。

這種依照MVC模式分割的方式,可以使得程式碼更有有條理,而且易於維護。

綜上所述,golang的目錄設定有多種方式,不同的方式適用於不同的項目。我們可以依照自己的需求選用對應的目錄設定方式。

以上是golang目錄設定的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板