日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

又有新功能!Go 將有生成新模板的 gonew 工具鏈

來源: 責編: 時間:2023-08-14 22:01:35 415觀看
導讀大家好,我是煎魚。不知道大家平時在日常工作中,會不會遇到一個問題?公司用著微服務架構,經常要創建新的服務,需要一個應用模板去初始化新的服務,減少 ctrl+c+v,轉為相對自動化。不同團隊根據 Leader 的喜好、要求不同,應用模

大家好,我是煎魚。N3q28資訊網——每日最新資訊28at.com

不知道大家平時在日常工作中,會不會遇到一個問題?公司用著微服務架構,經常要創建新的服務,需要一個應用模板去初始化新的服務,減少 ctrl+c+v,轉為相對自動化。N3q28資訊網——每日最新資訊28at.com

不同團隊根據 Leader 的喜好、要求不同,應用模板又會不同。有的喜歡 DDD、有的喜歡 MVC、有的大道至簡即可。每家公司都會延伸出一個工具鏈做這個事情。N3q28資訊網——每日最新資訊28at.com

新工具:gonew 生成模板

在 Go 社區也出現了這種訴求,Go 核心團隊帶頭大哥 @Russ Cox 發起了一個新討論《gonew: templates for new modules[1]》,引發了各方的熱議:N3q28資訊網——每日最新資訊28at.com

圖片圖片N3q28資訊網——每日最新資訊28at.com

原因是:Go 團隊經常收到用戶反饋要求使用某種 "go new" 功能,以某種基本模板啟動一個新的模塊(項目)。N3q28資訊網——每日最新資訊28at.com

這個工具不局限于 Go 團隊提供的模板,任何人都可以定義這個模板。這個模板也是很 “普通”,沒什么特殊的功能。N3q28資訊網——每日最新資訊28at.com

"go new" 的核心工作是下載一個模板,更改其模塊路徑,然后把它放到一個新的目錄中進行編輯。當然這個工具鏈未來可能還有更多的功能,但這就是最核心的訴求。N3q28資訊網——每日最新資訊28at.com

也出現了一個新的場景。有一名圖書作者,希望能夠更方便的提供圖書示例,不想要圖書讀者費盡心思克隆一個 git 倉庫。答案顯而易見,那就是本文提到的 gonew 工具。N3q28資訊網——每日最新資訊28at.com

快速體驗和實操

結合前后事跡來看,@Russ Cox 是一個執行效率比較高的人。提出討論的前幾個月,已經寫好了工具給大家試用了。N3q28資訊網——每日最新資訊28at.com

安裝命令如下:N3q28資訊網——每日最新資訊28at.com

$ go install golang.org/x/tools/cmd/gonew@latestgo: downloading golang.org/x/tools v0.11.1go: downloading golang.org/x/mod v0.12.0

創建命令如下:N3q28資訊網——每日最新資訊28at.com

$ gonew golang.org/x/example/hellogonew: initialized golang.org/x/example/hello in ./hello

執行完畢后,會在當前目錄下,創建一個 hello 目錄(./hello)。模板的結構如下:N3q28資訊網——每日最新資訊28at.com

$ tree hello hello├── LICENSE├── go.mod├── hello.go└── reverse    ├── example_test.go    ├── reverse.go    └── reverse_test.go1 directory, 6 files

我對比了一下,和模板基準的 git 倉庫 github.com/golang/example 的相關代碼是一致的。N3q28資訊網——每日最新資訊28at.com

可能會有同學說,不行啊。我還要改 module path。這點在現在也是已經支持的了。N3q28資訊網——每日最新資訊28at.com

如下命令:N3q28資訊網——每日最新資訊28at.com

$ gonew github.com/ServiceWeaver/template example.com/foogonew: initialized example.com/foo in ./foo

生成目錄:N3q28資訊網——每日最新資訊28at.com

$ tree foofoo├── LICENSE├── README.md├── go.mod├── go.sum├── main.go├── weaver.toml└── weaver_gen.go

對應生成的目錄名是指定的 foo,創建出來的 go.mod 文件的 module path 是:module example.com/foo。N3q28資訊網——每日最新資訊28at.com

符合上面提的要求。N3q28資訊網——每日最新資訊28at.com

一些討論

結合討論的內容來看,大家的反饋都是比較積極支持的。因為確實看到社區里很多人為此做了一模一樣的事情,各語言都有,真的是各顯神通了。N3q28資訊網——每日最新資訊28at.com

圖片圖片N3q28資訊網——每日最新資訊28at.com

有個別同學支持將本文提到的 go new 放到 go mod init 中,這樣就不需要再單獨創造一個新的命令集。N3q28資訊網——每日最新資訊28at.com

提出的同學認為 go mod init 本質上也是在引導 Go 應用的使用,和 go new 比較類似。可以調整為:N3q28資訊網——每日最新資訊28at.com

go mod init example.com/x/abc --template github.com/ServiceWeaver/template

以此滿足一樣的訴求。N3q28資訊網——每日最新資訊28at.com

不過我感覺這命令就太長了,沒 go new 那么短小精悍。N3q28資訊網——每日最新資訊28at.com

總結

本次 go new 工具的討論和實驗,Go 團隊非常迅速。目測勢在必得,肯定會加進去了。N3q28資訊網——每日最新資訊28at.com

因為根據反饋 Google 的幾個團隊也有興趣嘗試使用 gonew 進行模板化。ServiceWeaver 團隊對此也非常感興趣。N3q28資訊網——每日最新資訊28at.com

功能雖然非常簡單,但基本滿足了不同的團隊為了不同的代碼模板,創建一個新的模板的訴求。一旦成熟,也就不需要人均手搓一個模板的腳手架工具了。N3q28資訊網——每日最新資訊28at.com

后續各自在工具鏈套一下就 OK,一個快速的小成果就好了。推薦大家試用,又或是覺得還需要什么功能補充,也歡迎隨時留言。N3q28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-5748-0.html又有新功能!Go 將有生成新模板的 gonew 工具鏈

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 不要錯過這個機會:學習Java 8 Stream,提升編碼能力!

下一篇: TIOBE 8 月編程語言排行榜:Python 登頂,C / C++ 包攬第二第三

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 昭平县| 繁昌县| 甘德县| 瑞昌市| 博客| 天水市| 凤凰县| 洞头县| 舒兰市| 安阳县| 怀安县| 平邑县| 合山市| 承德市| 额尔古纳市| 四子王旗| 龙海市| 镇平县| 凤凰县| 孟州市| 泰和县| 曲阳县| 定远县| 肇东市| 太谷县| 石家庄市| 镶黄旗| 江达县| 清镇市| 监利县| 清水河县| 九龙县| 庆安县| 乐业县| 池州市| 株洲县| 河曲县| 无锡市| 大渡口区| 密山市| 十堰市|