來自:碼農網,譯者:小峰
鏈接:www.codeceo.com/article/golang-framework-ide-tools.html(點擊尾部閱讀原文前往)
原文:https://dzone.com/articles/golang-guide-a-list-of-top-golang-frameworks-ides
自推出以來,Google的Go編程語言(Golang)越來越受主流用戶的歡迎。在2016年12月的一份調研中,3,595名受訪者中有89%表明他們在工作中或工作以外用Go語言編程。
此外,在編程語言中,Go語言在專業知識和偏好方面排名最高。2017年7月,在Tiobe的年度編程語言排名中,Go語言從去年的第55名一躍跳到了第10名。
顯然,Go語言吸引了來自不同學科的許多程序員和軟件開發外包專業人士。可以這么說,這全都是因為Go語言的易用性。
作為一種編譯型的開源編程語言,Go語言能使開發人員輕松構建簡單可靠又高效的軟件。它是更保守的語言,如C和C ++的創新和演變的產物。
使用Go語言,可以減少代碼輸入量,並且編寫穩健的API而不犧牲性能變得更加容易。 Go語言旨在實現可擴展性和並發性,從而實現優化。編譯器可以在運行時前執行所有代碼檢查工作。
我們收羅了Golang的頂級框架、IDE和工具列表,以供大家快速參考。建議添加到瀏覽器書簽中,以便隨時查看!

Golang框架
Web框架可以幫助開發人員盡可能方便快捷地構建應用程序。Go語言還比較新,所以使用的框架帶有充足的文檔很重要。
這里有9個框架可幫助你使用Go語言構建項目。
1、Revel
作為Go語言的高效生產力框架,Revel包含的Hot Code Reload工具可以讓你在每次更改文件時重建項目。它還包括各種全面和高性能的功能,因此你不需要找外部庫集成到框架中。
2、Beego
Beego是一個完整的MVC框架,有自己的日志庫、ORM和Web框架。你不需要再去安裝第三方庫。它有一個稱為Bee Tool的內置工具,用於監視代碼更改,並在檢測到更改時運行任務。
Beego可以為你節省很多時間,特別是在項目一開始,你要弄清楚日志框架或應用程序結構的時候。
3、Martini
受Sinatra啟發,Martini是一個極其輕巧但功能強大的框架。它被開發用於用Golang編寫模塊化Web應用程序和服務。
它的特點是非侵入式設計,快速易用,且包括各種處理程序和中間件。它能夠為HTML5模式的AngularJS應用程序執行基本路由,異常處理和默認文檔服務。
Martini的最佳功能是可以使用反射,它允許開發人員動態地將數據插入到處理函數中並添加新的服務。Martini也完全兼容http.HandlerFunc界面。不過,缺點在於Martini框架不再維護了。
4、Gin Gonic
Gin Gonic是一個Web框架,有類似Martini的API,但性能更好。如果你以前使用過Martini,那么你也一定熟悉Gin Gonic。沒用過Martini也沒關系,只需要學習10分鍾就能掌握Gin。就是這么容易!
Gin Gonic是一個極簡化的框架,僅包含最重要的庫和功能。這使得它非常適合開發高性能REST API。此外,它比Martini快四十倍。
你可以添加中間件、嵌套組、JSON驗證以及渲染,並依然保持其最佳性能。Gin Gonic使用httprouter,Go語言最快的HTTP路由器。
5、Buffalo
要構建Go語言新的Web應用程序,使用Buffalo是一個快速又簡單的方法。當你開始一個新項目時,Buffalo可以為你提供一切——從前端到后端開發。
它具有熱重載功能,這意味着dev命令將自動查看.go和.html文件。然后,它將為你重建並重啟二進制文件。運行dev命令,你就能看到變化在你的眼前發生!
Buffalo不僅僅是一個框架——它也是一個整體的Web開發生態系統,可以讓你直接構建應用程序。
6、Goji
Goji是一個輕量級的快速Web框架,將可組合性和簡單性作為其主要優先級。很像net / http.ServeMux,Goji是一個極簡的HTTP請求復用器。它包括Einhorn支持,允許在Goji中提供Websocket支持。
其他功能包括URL模式,可重新配置的中間件堆棧,正常關機等。Goji可以用於生產,並在若干組織中提供了數以億計個請求。
7、Tiger Tonic
受Dropwizard啟發,Tiger Tonic是開發JSON Web服務和構建高性能REST API的Go框架。為了忠於Golang的原則,Tiger Tonic努力保持正交特性。
Tiger Tonic的缺點在於構建大型后端應用程序尚有不足之處。
8、Gocraft
這是又一個強大而簡約的框架,Gocraft提供快速和可擴展的路由性能。它將路由添加來自標准庫的net / http包中。
Gocraft是一個Go mux和中間件軟件包,具有強大的投射和反射能力,可以靜態輸入代碼。你還可以使用內置中間件添加可選功能或者自己編寫。
由於性能始終是開發人員最關心的問題之一,所以Gocraft是開發人員的絕佳選擇。而且使用Gocraft框架編寫后端Web應用程序很容易。
9、Mango
雖然Mango沒有得到創作者Paul Bellamy的積極維護,但Go語言的許多用戶仍然在使用它。Mango的優勢在於它的模塊化。你可以從各種庫中選擇,以包含在你的項目中。
Mango讓你可以盡可能快速又輕松地構建可重復使用的HTTP功能模塊。它將一系列中間件和應用程序編譯成單個HTTP服務器對象,以保持代碼獨立。
Golang的集成開發環境(IDE)
Golang的IDE隨着Go語言的普及越來越受大家的歡迎。雖然還是有許多開發人員仍然喜歡使用文本編輯器,但也有很多開發人員更傾向於使用IDE。
如果你正工作於具有廣泛代碼庫的大型項目,那么IDE可以幫助你輕松組織代碼和導航。此外,IDE可以幫助你測試代碼並相應地編輯。
以下是用Golang工作良好的頂尖IDE。
1、Gogland
軟件開發公司JetBrains發布了另一個可靠的IDE,這次是針對Golang發布的。Gogland是一個商業IDE,為Go開發人員提供了一個強大的人機工程學環境。它還具有編碼協助、調試器和集成終端的功能。
由於Gogland是由一家已成立的公司創建的,所以它擁有廣泛的IntelliJ插件生態系統,讓你可以在需要更多工具的時候獲得更多。
2、Visual Studio Code
由Microsoft創建的Visual Studio Code是一個功能齊全的開源IDE和代碼編輯器,支持各種各樣的編程語言。它的特點是智能完成;使用斷點調用、調用堆棧和交互式控制台調試;內置Git集成;以及分層文件夾和文件瀏覽器。
作為另一個流行的IDE,Visual Studio Code有一個Go開發人員定期貢獻的支持社區。使用Visual Studio Code,你可以使用可用插件數組來擴展功能。
3、LiteIDE
LiteIDE是五年多前創建的首個以Golang為中心的開源IDE。作為具有獨特外觀的C ++ Qt應用程序,LiteIDE提供代碼管理、可配置構建命令、gdb和Delve調試器,使用WordApi——基於MIME類型的系統——自動完成和創建等等。它還提供JSON和Golang支持。
4、Wide
Wide是Golang程序員使用的基於Web的IDE。它專為協作開發而設計,適用於團隊和Web開發機構。Wide功能包括代碼高亮、調試、Git集成等。
因為Wide是由一名中國開發者創建和維護的,所以其大部分文檔和支持是中文的。
5、帶有Go-Plus插件的Atom
如果你已經在使用Atom,那么你可以通過一個名為go-plus的開源軟件包來改善Golang語言的代碼編輯體驗。使用go-plus,你可以立即獲得關於語法和構建錯誤的實時反饋。
Go-plus軟件包提供了幾乎所有Atom中對Golang的支持。它還可以用於工具,構建流程,linters,vet和coverage工具。
Go-plus還包括各種代碼片段和功能,如gocode的自動完成,gofmt、goreturns或goimports等的代碼格式化。
6、帶有GoClipse的Eclipse
由於Eclipse是廣受歡迎的IDE,因此我們為其創建了許多插件。GoClipse是針對Golang的Eclipse插件,提供Go源代碼編輯,具有可配置的語法高亮和自動縮進以及大括號完成功能。
GoClipse還可以作為項目向導和構建器來立即報告語法和構建錯誤。GoClipse的其他功能包括調試功能和代碼輔助。
7、帶有GoSublime的Sublime Text
Sublime Text也是一個復雜的文本編輯器,具有大量的貢獻者和開發者社區。因此,開發者為此IDE創建了各種各樣的插件。
GoSublime是Sublime Text 3針對Golang的插件,在你編寫代碼時,提供來自Gocode的代碼完成,lint /語法檢查,自動添加和刪除程序包導入,等等。
8、帶有Vim-Go插件的Vim
Vim是一個免費的開源IDE,可以定制和配置各種插件。如果你是Golang程序員,那么你可以使用Vim中由Fatih Arslan創建的vim-go插件。Vim-go自動安裝所有必需的二進制文件,為Golang提供平滑的Vim集成。
Vim-go是一款功能強大的插件套件,用於撰寫和開發Go。其功能包括高級源代碼分析,添加和刪除導入路徑,多次第三方支持,goto定義,快速文件執行等等。
Vim-go是高度可定制的,可以根據你的需要啟用或禁用各種功能。
9、Komodo
Komodo是一個全功能的Go語言IDE,並且支持如Node.js,Python,Ruby,Perl等其他編程語言。使用這個Go IDE,你可以輕松地編寫干凈的代碼。其功能包括高級代碼編輯器,智能代碼完成,語法檢查,版本控制和單元測試,以及允許代碼瀏覽和代碼提示的Go Code Intelligence。
Komodo的優點是,它可以很好地協助團隊合作,因為允許多個開發人員同時編輯文檔。只要一個許可證,Komodo就可以安裝在Mac,Windows或Linux上。
10、帶有Go語言(golang.org)支持插件的IntelliJ IDEA
IntelliJ IDEA(由JetBrains公司開發)是可以通過Go語言支持插件從而使用Golang的IDE。如果你想要在IntelliJ IDEA中使用Golang,那么你需要安裝此插件,雖然不同於Gogland,它的功能有限。
Golang工具
Golang工具可用於各種項目和Web應用程序。使用這些有用的工具可以幫助開發人員盡可能快速而輕松地編寫代碼並構建應用程序。
這里有一系列頂級的Golang工具以供參考。
1、Apicompat
Apicompat是一種新的Go語言工具,可幫助開發人員檢測向后不兼容的更改和導出的聲明。
你可以通過Apicompat避免誤報。但是,Apicompat並不能檢測到每個向后不兼容的變化。並且,庫作者沒有考慮到交換參數和其他更改的需要。
2、Checkstyle
受Java Checkstyle啟發,針對Golang的Checkstyle輸出編碼風格的建議。它還允許開發人員檢查文件行/函數和行/參數號,然后由用戶進行配置。
3、Depth
又一個有用的Golang工具,Depth可幫助Web開發人員檢索和可視化Go源代碼依賴關系樹。它可以用作獨立的命令行應用程序或作為項目中的特定包。你可以通過在解析之前在Tree上設置相應的標志來添加自定義。
4、Go-Swagger
該工具包包括各種功能和功能。Go-Swagger是Swagger 2.0的一個實現,可以序列化和反序列化swagger規范。它是RESTful API簡約但強大的代表。
通過Go-Swagger,你可以swagger規范文檔,驗證JSON模式以及其他額外的規則。其他功能包括代碼生成,基於swagger規范的API生成,基於代碼的規范文檔生成,擴展了的字符串格式,等等。
5、Go Meta Linter
如果你需要運行Go lint工具並同時使其輸出正常化,那么Go Meta Linter可以為你辦到。Go Meta Linter旨在與文本編輯器或IDE集成,如如Sublime Linter插件,Atom go-plus包,Emacs Flycheck檢查器,Vim / Neovim,以及Go for Visual Studio Code一起使用。它還支持各種各樣的linter和配置文件,如JSON。
6、Go-callvis
Go-callvis是一個Web開發工具,允許你使用Graphviz的點格式可視化Go程序的調用圖。此工具在構建具有復雜代碼庫的大型項目時特別有用。它在你想要了解另一個開發人員的代碼結構或重建別人的項目時,也很有用。
通過go-callvis,開發人員可以在程序中關注特定包;根據軟件包的分組函數和根據類型的方法;以及將軟件包限制到自定義路徑前綴,並忽略那些包含它們的自定義前綴。
7、Gonative
Gonative是一個簡單的Golang工具,讓你能夠使用本機庫構建Go工具鏈,而這可以在使用stdlib軟件包的Cgo-enabled版本時進行交叉編譯。
Gonative為每個平台下載二進制發行版,並將它們的庫復制到正確的位置。同時,Gonative設置正確的mod時間,以避免不必要的重建。
不幸的是,Gonative在Windows上仍然未經測試。此外,也沒有提供Linux / arm支持。
8、Grapes
Grapes是一種輕量級的Golang工具,旨在輕松地通過SSH分發命令。它由Yaron Sumel編寫和積極維護。
Grapes不久將支持完整的主機密鑰驗證,這是開發人員應該注意到的。
9、Gosimple
Golang linter的偉大之處在於它專注於簡化Go源代碼。Gosimple始終將最新的Go版本作為目標,因此它需要Go 1.6或更高版本。
如果有新的Go版本,gosimple會建議最輕松和最簡單的方法來避免復雜的構造。
10、Go Vendor
Go Vendor是與標准Vendor文件夾兼容的Golang工具。它允許開發人員通過govendor add / update從$GOPATH中復制現有的依賴關系。你還可以通過govendor fetch直接提取新的依賴關系或更新現有的依賴關系,以及使用govendor遷移來移動舊的系統。
總結
如果你有JS / Node背景,那么你還需要學習一些新的編程概念,如協同程序,通道,嚴格的類型與編譯,接口,結構,指針和其他一些差異。但是,一旦你進入狀態,你會發現Golang用起來更容易,也更快。