當前位置:成語大全網 - 書法字典 - Go 1.18新功能多模塊工作區教程

Go 1.18新功能多模塊工作區教程

?隨著2022年3月5日go 1.18的正式發布,新版本不僅提升了性能,還引入了很多新的功能,包括大家期待已久的go的功能泛型,還引入了多模塊工作區和Fuzzing測試。

?網上已經有很多關於泛型的教程了。這裏我介紹壹個實用的功能,多模塊工作區的用法和教程。

?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-功能/