?網上已經有很多關於泛型的教程了。這裏我介紹壹個實用的功能,多模塊工作區的用法和教程。
?Go多模塊工作區可以使開發人員更容易同時處理多個模塊的工作,例如:
?多模塊工作空間
?開發過程演示
?摘要
?參考
?Go采用多模塊工作區,開發者更容易同時處理多個模塊的開發。在Go 1.17之前,只能使用go.mod替換指令。如果妳恰好同時在開發多個模塊,用起來可能會很痛苦。每次要提交代碼,都要刪除go.mod中的replace,讓模塊穩定發布。?在使用go 1.18的多模塊工作空間功能時,變得簡單易行。我來介紹壹下這個功能的使用方法。?Go多模塊工作區文檔和代碼示例[5]
?首先,我們需要go 1.18或更高版本來安裝[6]
?壹般情況下,不建議將go.work文件提交給git,因為它主要用於本地代碼開發。
?建議在:$GOPATH路徑下執行,生成go.work文件。
?Go work init初始化用於生成go.work工作空間文件的工作空間文件。
?開始工作使用向工作區添加新模塊。
?Go work edit用於編輯go.work文件。
?Go work sync將工作區的構建列表與工作區的模塊同步。
?去環境工作
?文件結構類似於go.mod文件結構,支持go版本號,指定要替換的工作區和倉庫。文件結構示例:
?可以使用go work use hello添加模塊,也可以手動修改go.work工作區添加新模塊?工作區中添加了模塊路徑,編譯時會自動使用正在使用的本地代碼進行代碼編譯,類似於replaces的功能。
?replace命令與go.mod命令相同,用於替換依賴於項目的倉庫地址?應該註意,replaces和use不能同時指定同壹個本地路徑。
?錯誤示例
?同時使用go.work和go.mod replace函數時,分別指定不同的代碼庫路徑,go.work的優先級高於go.mod中定義的優先級。
?go.work指定的example1倉庫的代碼用於代碼構造,go.work的優先級更高。
?GoRun和go build在Go1.18中會默認使用workspace函數嗎?GOWORK還可以指定配置go.work文件位置。
?Go全局變量GOWORK設置為off以禁用工作區功能。
?演示如何使用多模塊工作區功能。現在的微服務時代,壹個人會維護多個代碼倉庫,很多時候會同時開發多個倉庫。
?假設我們現在正在開發hello warehouse,實現的功能是將輸入的字符串反轉輸出。字符串反轉功能依賴於github.com/link1st/example(以下統稱為示例)公共* * *倉庫的實現。
?新hello項目
?Main.go代碼
?運行代碼go run main . go-str“hello world”或gorun github . com/link 1st/link 1st/work spaces/hello-str“hello world”查看輸出hello world反轉後的字符串。
?此時,初始功能已經完成,但後續需求變化,不僅需要輸出倒串,還需要將串大寫。
?我們需要去示例倉庫添加和開發大寫字符串的功能
?vimiexample/stringtil/to _ upper . go的代碼如下
?由於代碼還在本地調試,沒有提交到git倉庫,這時候就需要Go多模塊工作區的功能了。
?進入項目根目錄,初始化我們現在正在開發的模塊。
?文件結構如下
?回到hello項目,vim main.go將字符串大寫的函數添加到。
?運行代碼
?至此,演示代碼已經完成。
?利用Go多模塊工作區的功能,可以讓我們在多個模塊之間輕松切換,更適合現代微服務架構的開發。
[1] Go 1.18新功能多模塊工作區教程:/link 1ST/link 1ST/tree/master/work spaces
[2] Go 1.18發布!:https://go.dev/blog/go1.18
[3]教程:多模塊工作區入門:https://go.dev/doc/tutorial/workspaces
[4]go-1.18-功能:https://sebastian-Holstein . de/post/2021-11-08-go-1.18-功能/