Golang workspace 多模塊工作區是真的好
最近,使用了 Golang workspace,它是真的好。今日推薦給大家。
Golang 在 1.18 版本開始支持多模塊工作區。使用多模塊工作區,可以幫助您同時在多個模塊中編寫代碼,並在這些模塊中輕鬆構建和運行代碼。
要創建多模塊工作區,請確保你安裝的 Go 版本在 1.18 及以上纔行。我們以 Windows 爲例,演示如何創建工作區。
一、創建一個目錄叫 workspace,這個是工作區的名稱。
mkdir workspace
cd workspace
二、創建 hello 模塊,我們將創建一個 hello 模塊。
mkdir hello
cd hello
go mod init example.com/hello
模塊就是我們日常創建的項目,這裏是多個模塊共用一個工作區。後面會以實際例子講解。這裏創建主文件 hello.go,並添加如下內容:
package main
import (
"fmt"
"golang.org/x/example/hello/reverse"
)
func main() {
fmt.Println(reverse.String("Hello"))
}
該文件運行後,將會輸出 olleH。
三、創建工作區。我們會創建一個 go.work 文件用來指示工作區中包含哪些模塊。
go work init ./hello
上面的命令將創建一個 go.work 文件,幷包含 hello 模塊。
go.work 文件內容如下:
go 1.18
use ./hello
go.work 文件的語法與 go.mod 相似。go 指令告訴 Go 應該使用哪個版本來解釋文件。use 指令告訴 Go 在進行構建時 hello 目錄中的模塊應該是主模塊。在工作區中,任何子目錄中該模塊都將處於活動狀態。
我們可以繼續創建 world 模塊,類似於 hello 模塊。我們再創建一個 world 模塊,然後可以在 world 模塊中調用 hello 模塊內容。在 workspace 中,創建 world 文件夾,並進行初始化模塊。
mkdir world
cd world
go mod init example.com/world
添加到工作區中,使用 go work 命令:
go work use ./world
上面命令將添加 world 模塊到 go.work 文件中,你也可以添加更多的模塊,go.work 內容將更新如下:
go 1.18
use (
./hello
./world
)
然後,就可以在 world 模塊中使用 hello 模塊的函數了。
什麼情況下使用工作區?
當你的項目包含多個服務,並且這幾個服務相關時,放置在一個工作區中。我這裏舉個實際的例子。我們有一個聊天項目。包含 API 接口服務,聊天服務,支付服務,後臺管理服務。這幾個服務以前是各自獨立的。每個服務都有一個 Git 倉庫。幾個項目之間是相關的,使用相同的數據庫。在將這幾個服務使用工作區後,擁有以下幾個好處:
1,多個服務使用一個 Git 倉庫即可。也可以每個模塊使用一個 git 倉庫。各有各的好處。
2,多個服務使用一個 vscode 即可打開。以前是一個服務使用一個 vscode,多個服務就打開多個 vscode。非常的喫開發主機內存。
3,每個服務即是一個模塊,模塊之間可以相互調用。也可以將共用部分抽出形成一個模塊,方便代碼維護。以前寫功能時,特別是 SQL 查詢功能,都在每個服務中複製一遍。現在,只需要寫在基礎模塊中,其他服務跨模塊調用即可。
在使用了 Golang 的 workspace 之後,工作效率真的提高很多。
更多的內容,請參考官方文檔:
https://go.dev/doc/tutorial/workspaces
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/dx37uley1z1MZRyujQIEgw