自推出以來(lái)井仰,Google的Go編程語(yǔ)言(Golang)越來(lái)越受主流用戶的歡迎。在2016年12月的一份調(diào)研中第献,3,595名受訪者中有89%表明他們?cè)诠ぷ髦谢蚬ぷ饕酝庥肎o語(yǔ)言編程贡必。
此外,在編程語(yǔ)言中庸毫,Go語(yǔ)言在專業(yè)知識(shí)和偏好方面排名最高仔拟。2017年7月,在Tiobe的年度編程語(yǔ)言排名中飒赃,Go語(yǔ)言從去年的第55名一躍跳到了第10名利花。
顯然科侈,Go語(yǔ)言吸引了來(lái)自不同學(xué)科的許多程序員和軟件開發(fā)外包專業(yè)人士〕词拢可以這么說(shuō)兑徘,這全都是因?yàn)镚o語(yǔ)言的易用性。
作為一種編譯型的開源編程語(yǔ)言羡洛,Go語(yǔ)言能使開發(fā)人員輕松構(gòu)建簡(jiǎn)單可靠又高效的軟件挂脑。它是更保守的語(yǔ)言,如C和C ++的創(chuàng)新和演變的產(chǎn)物欲侮。
使用Go語(yǔ)言崭闲,可以減少代碼輸入量,并且編寫穩(wěn)健的API而不犧牲性能變得更加容易威蕉。 Go語(yǔ)言旨在實(shí)現(xiàn)可擴(kuò)展性和并發(fā)性刁俭,從而實(shí)現(xiàn)優(yōu)化。編譯器可以在運(yùn)行時(shí)前執(zhí)行所有代碼檢查工作韧涨。
我們收羅了Golang的頂級(jí)框架牍戚、IDE和工具列表,以供大家快速參考虑粥。建議添加到瀏覽器書簽中如孝,以便隨時(shí)查看!
Golang框架
Web框架可以幫助開發(fā)人員盡可能方便快捷地構(gòu)建應(yīng)用程序娩贷。Go語(yǔ)言還比較新第晰,所以使用的框架帶有充足的文檔很重要。
這里有9個(gè)框架可幫助你使用Go語(yǔ)言構(gòu)建項(xiàng)目彬祖。
1.Revel
作為Go語(yǔ)言的高效生產(chǎn)力框架茁瘦,Revel包含的Hot Code Reload工具可以讓你在每次更改文件時(shí)重建項(xiàng)目。它還包括各種全面和高性能的功能储笑,因此你不需要找外部庫(kù)集成到框架中甜熔。
2.Beego
Beego是一個(gè)完整的MVC框架,有自己的日志庫(kù)突倍、ORM和Web框架腔稀。你不需要再去安裝第三方庫(kù)。它有一個(gè)稱為Bee Tool的內(nèi)置工具赘方,用于監(jiān)視代碼更改烧颖,并在檢測(cè)到更改時(shí)運(yùn)行任務(wù)弱左。
Beego可以為你節(jié)省很多時(shí)間窄陡,特別是在項(xiàng)目一開始,你要弄清楚日志框架或應(yīng)用程序結(jié)構(gòu)的時(shí)候拆火。
3.Martini
受Sinatra啟發(fā)跳夭,Martini是一個(gè)極其輕巧但功能強(qiáng)大的框架涂圆。它被開發(fā)用于用Golang編寫模塊化Web應(yīng)用程序和服務(wù)。
它的特點(diǎn)是非侵入式設(shè)計(jì)币叹,快速易用润歉,且包括各種處理程序和中間件。它能夠?yàn)镠TML5模式的AngularJS應(yīng)用程序執(zhí)行基本路由颈抚,異常處理和默認(rèn)文檔服務(wù)踩衩。
Martini的最佳功能是可以使用反射,它允許開發(fā)人員動(dòng)態(tài)地將數(shù)據(jù)插入到處理函數(shù)中并添加新的服務(wù)贩汉。Martini也完全兼容http.HandlerFunc界面驱富。不過(guò),缺點(diǎn)在于Martini框架不再維護(hù)了匹舞。
4.Gin Gonic
Gin Gonic是一個(gè)Web框架褐鸥,有類似Martini的API,但性能更好赐稽。如果你以前使用過(guò)Martini叫榕,那么你也一定熟悉Gin Gonic。沒(méi)用過(guò)Martini也沒(méi)關(guān)系姊舵,只需要學(xué)習(xí)10分鐘就能掌握Gin晰绎。就是這么容易!
Gin Gonic是一個(gè)極簡(jiǎn)化的框架括丁,僅包含最重要的庫(kù)和功能寒匙。這使得它非常適合開發(fā)高性能REST API。此外躏将,它比Martini快四十倍锄弱。
你可以添加中間件、嵌套組祸憋、JSON驗(yàn)證以及渲染会宪,并依然保持其最佳性能。Gin Gonic使用httprouter蚯窥,Go語(yǔ)言最快的HTTP路由器掸鹅。
5.Buffalo
要構(gòu)建Go語(yǔ)言新的Web應(yīng)用程序,使用Buffalo是一個(gè)快速又簡(jiǎn)單的方法拦赠。當(dāng)你開始一個(gè)新項(xiàng)目時(shí)巍沙,Buffalo可以為你提供一切——從前端到后端開發(fā)。
它具有熱重載功能荷鼠,這意味著dev命令將自動(dòng)查看.go和.html文件句携。然后,它將為你重建并重啟二進(jìn)制文件允乐。運(yùn)行dev命令矮嫉,你就能看到變化在你的眼前發(fā)生削咆!
Buffalo不僅僅是一個(gè)框架——它也是一個(gè)整體的Web開發(fā)生態(tài)系統(tǒng),可以讓你直接構(gòu)建應(yīng)用程序蠢笋。
6.Goji
Goji是一個(gè)輕量級(jí)的快速Web框架拨齐,將可組合性和簡(jiǎn)單性作為其主要優(yōu)先級(jí)。很像net / http.ServeMux昨寞,Goji是一個(gè)極簡(jiǎn)的HTTP請(qǐng)求復(fù)用器瞻惋。它包括Einhorn支持,允許在Goji中提供Websocket支持援岩。
其他功能包括URL模式熟史,可重新配置的中間件堆棧,正常關(guān)機(jī)等窄俏。Goji可以用于生產(chǎn)蹂匹,并在若干組織中提供了數(shù)以億計(jì)個(gè)請(qǐng)求。
7.Tiger Tonic
受Dropwizard啟發(fā)凹蜈,Tiger Tonic是開發(fā)JSON Web服務(wù)和構(gòu)建高性能REST API的Go框架限寞。為了忠于Golang的原則,Tiger Tonic努力保持正交特性仰坦。
Tiger Tonic的缺點(diǎn)在于構(gòu)建大型后端應(yīng)用程序尚有不足之處履植。
8. Gocraft
這是又一個(gè)強(qiáng)大而簡(jiǎn)約的框架,Gocraft提供快速和可擴(kuò)展的路由性能悄晃。它將路由添加來(lái)自標(biāo)準(zhǔn)庫(kù)的net / http包中玫霎。
Gocraft是一個(gè)Go mux和中間件軟件包,具有強(qiáng)大的投射和反射能力妈橄,可以靜態(tài)輸入代碼庶近。你還可以使用內(nèi)置中間件添加可選功能或者自己編寫。
由于性能始終是開發(fā)人員最關(guān)心的問(wèn)題之一眷蚓,所以Gocraft是開發(fā)人員的絕佳選擇鼻种。而且使用Gocraft框架編寫后端Web應(yīng)用程序很容易。
9.Mango
雖然Mango沒(méi)有得到創(chuàng)作者Paul Bellamy的積極維護(hù)沙热,但Go語(yǔ)言的許多用戶仍然在使用它叉钥。Mango的優(yōu)勢(shì)在于它的模塊化。你可以從各種庫(kù)中選擇篙贸,以包含在你的項(xiàng)目中投队。
Mango讓你可以盡可能快速又輕松地構(gòu)建可重復(fù)使用的HTTP功能模塊。它將一系列中間件和應(yīng)用程序編譯成單個(gè)HTTP服務(wù)器對(duì)象爵川,以保持代碼獨(dú)立敷鸦。
Golang的集成開發(fā)環(huán)境(IDE)
Golang的IDE隨著Go語(yǔ)言的普及越來(lái)越受大家的歡迎。雖然還是有許多開發(fā)人員仍然喜歡使用文本編輯器,但也有很多開發(fā)人員更傾向于使用IDE轧膘。
如果你正工作于具有廣泛代碼庫(kù)的大型項(xiàng)目钞螟,那么IDE可以幫助你輕松組織代碼和導(dǎo)航兔甘。此外谎碍,IDE可以幫助你測(cè)試代碼并相應(yīng)地編輯。
以下是用Golang工作良好的頂尖IDE洞焙。
1.Gogland
軟件開發(fā)公司JetBrains發(fā)布了另一個(gè)可靠的IDE蟆淀,這次是針對(duì)Golang發(fā)布的。Gogland是一個(gè)商業(yè)IDE澡匪,為Go開發(fā)人員提供了一個(gè)強(qiáng)大的人機(jī)工程學(xué)環(huán)境熔任。它還具有編碼協(xié)助、調(diào)試器和集成終端的功能唁情。
由于Gogland是由一家已成立的公司創(chuàng)建的疑苔,所以它擁有廣泛的IntelliJ插件生態(tài)系統(tǒng),讓你可以在需要更多工具的時(shí)候獲得更多甸鸟。
2. Visual Studio Code
由Microsoft創(chuàng)建的Visual Studio Code是一個(gè)功能齊全的開源IDE和代碼編輯器惦费,支持各種各樣的編程語(yǔ)言。它的特點(diǎn)是智能完成抢韭;使用斷點(diǎn)調(diào)用薪贫、調(diào)用堆棧和交互式控制臺(tái)調(diào)試;內(nèi)置Git集成刻恭;以及分層文件夾和文件瀏覽器瞧省。
作為另一個(gè)流行的IDE,Visual Studio Code有一個(gè)Go開發(fā)人員定期貢獻(xiàn)的支持社區(qū)鳍贾。使用Visual Studio Code鞍匾,你可以使用可用插件數(shù)組來(lái)擴(kuò)展功能。
3. LiteIDE
LiteIDE是五年多前創(chuàng)建的首個(gè)以Golang為中心的開源IDE骑科。作為具有獨(dú)特外觀的C ++ Qt應(yīng)用程序候学,LiteIDE提供代碼管理倍阐、可配置構(gòu)建命令敛苇、gdb和Delve調(diào)試器,使用WordApi——基于MIME類型的系統(tǒng)——自動(dòng)完成和創(chuàng)建等等望几。它還提供JSON和Golang支持伍掀。
4.Wide
Wide是Golang程序員使用的基于Web的IDE掰茶。它專為協(xié)作開發(fā)而設(shè)計(jì),適用于團(tuán)隊(duì)和Web開發(fā)機(jī)構(gòu)蜜笤。Wide功能包括代碼高亮濒蒋、調(diào)試、Git集成等。
因?yàn)閃ide是由一名中國(guó)開發(fā)者創(chuàng)建和維護(hù)的沪伙,所以其大部分文檔和支持是中文的瓮顽。
5.帶有Go-Plus插件的Atom
如果你已經(jīng)在使用Atom,那么你可以通過(guò)一個(gè)名為go-plus的開源軟件包來(lái)改善Golang語(yǔ)言的代碼編輯體驗(yàn)围橡。使用go-plus暖混,你可以立即獲得關(guān)于語(yǔ)法和構(gòu)建錯(cuò)誤的實(shí)時(shí)反饋。
Go-plus軟件包提供了幾乎所有Atom中對(duì)Golang的支持翁授。它還可以用于工具拣播,構(gòu)建流程,linters收擦,vet和coverage工具贮配。
Go-plus還包括各種代碼片段和功能,如gocode的自動(dòng)完成塞赂,gofmt泪勒、goreturns或goimports等的代碼格式化。
6.帶有GoClipse的Eclipse
由于Eclipse是廣受歡迎的IDE宴猾,因此我們?yōu)槠鋭?chuàng)建了許多插件圆存。GoClipse是針對(duì)Golang的Eclipse插件,提供Go源代碼編輯鳍置,具有可配置的語(yǔ)法高亮和自動(dòng)縮進(jìn)以及大括號(hào)完成功能辽剧。
GoClipse還可以作為項(xiàng)目向?qū)Ш蜆?gòu)建器來(lái)立即報(bào)告語(yǔ)法和構(gòu)建錯(cuò)誤。GoClipse的其他功能包括調(diào)試功能和代碼輔助税产。
7.帶有GoSublime的Sublime Text
Sublime Text也是一個(gè)復(fù)雜的文本編輯器怕轿,具有大量的貢獻(xiàn)者和開發(fā)者社區(qū)。因此辟拷,開發(fā)者為此IDE創(chuàng)建了各種各樣的插件撞羽。
GoSublime是Sublime Text 3針對(duì)Golang的插件,在你編寫代碼時(shí)衫冻,提供來(lái)自Gocode的代碼完成诀紊,lint /語(yǔ)法檢查,自動(dòng)添加和刪除程序包導(dǎo)入隅俘,等等邻奠。
8.帶有Vim-Go插件的Vim
Vim是一個(gè)免費(fèi)的開源IDE,可以定制和配置各種插件为居。如果你是Golang程序員碌宴,那么你可以使用Vim中由Fatih Arslan創(chuàng)建的vim-go插件。Vim-go自動(dòng)安裝所有必需的二進(jìn)制文件蒙畴,為Golang提供平滑的Vim集成贰镣。
Vim-go是一款功能強(qiáng)大的插件套件呜象,用于撰寫和開發(fā)Go。其功能包括高級(jí)源代碼分析碑隆,添加和刪除導(dǎo)入路徑恭陡,多次第三方支持,goto定義上煤,快速文件執(zhí)行等等休玩。
Vim-go是高度可定制的,可以根據(jù)你的需要啟用或禁用各種功能楼入。
9.Komodo
Komodo是一個(gè)全功能的Go語(yǔ)言IDE哥捕,并且支持如Node.js牧抽,Python嘉熊,Ruby,Perl等其他編程語(yǔ)言扬舒。使用這個(gè)Go IDE阐肤,你可以輕松地編寫干凈的代碼。其功能包括高級(jí)代碼編輯器讲坎,智能代碼完成孕惜,語(yǔ)法檢查,版本控制和單元測(cè)試晨炕,以及允許代碼瀏覽和代碼提示的Go Code Intelligence衫画。
Komodo的優(yōu)點(diǎn)是,它可以很好地協(xié)助團(tuán)隊(duì)合作瓮栗,因?yàn)樵试S多個(gè)開發(fā)人員同時(shí)編輯文檔削罩。只要一個(gè)許可證,Komodo就可以安裝在Mac费奸,Windows或Linux上弥激。
10. 帶有Go語(yǔ)言(golang.org)支持插件的IntelliJ IDEA
IntelliJ IDEA(由JetBrains公司開發(fā))是可以通過(guò)Go語(yǔ)言支持插件從而使用Golang的IDE。如果你想要在IntelliJ IDEA中使用Golang愿阐,那么你需要安裝此插件微服,雖然不同于Gogland,它的功能有限缨历。
Golang工具
Golang工具可用于各種項(xiàng)目和Web應(yīng)用程序以蕴。使用這些有用的工具可以幫助開發(fā)人員盡可能快速而輕松地編寫代碼并構(gòu)建應(yīng)用程序。
這里有一系列頂級(jí)的Golang工具以供參考辛孵。
1.Apicompat
Apicompat是一種新的Go語(yǔ)言工具丛肮,可幫助開發(fā)人員檢測(cè)向后不兼容的更改和導(dǎo)出的聲明。
你可以通過(guò)Apicompat避免誤報(bào)觉吭。但是腾供,Apicompat并不能檢測(cè)到每個(gè)向后不兼容的變化。并且,庫(kù)作者沒(méi)有考慮到交換參數(shù)和其他更改的需要伴鳖。
2.Checkstyle
受Java Checkstyle啟發(fā)节值,針對(duì)Golang的Checkstyle輸出編碼風(fēng)格的建議。它還允許開發(fā)人員檢查文件行/函數(shù)和行/參數(shù)號(hào)榜聂,然后由用戶進(jìn)行配置搞疗。
3.Depth
又一個(gè)有用的Golang工具,Depth可幫助Web開發(fā)人員檢索和可視化Go源代碼依賴關(guān)系樹须肆。它可以用作獨(dú)立的命令行應(yīng)用程序或作為項(xiàng)目中的特定包匿乃。你可以通過(guò)在解析之前在Tree上設(shè)置相應(yīng)的標(biāo)志來(lái)添加自定義。
4.Go-Swagger
該工具包包括各種功能和功能豌汇。Go-Swagger是Swagger 2.0的一個(gè)實(shí)現(xiàn)幢炸,可以序列化和反序列化swagger規(guī)范。它是RESTful API簡(jiǎn)約但強(qiáng)大的代表拒贱。
通過(guò)Go-Swagger宛徊,你可以swagger規(guī)范文檔,驗(yàn)證JSON模式以及其他額外的規(guī)則逻澳。其他功能包括代碼生成闸天,基于swagger規(guī)范的API生成,基于代碼的規(guī)范文檔生成斜做,擴(kuò)展了的字符串格式苞氮,等等。
5.Go Meta Linter
如果你需要運(yùn)行Go lint工具并同時(shí)使其輸出正橙勘疲化笼吟,那么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是一個(gè)Web開發(fā)工具,允許你使用Graphviz的點(diǎn)格式可視化Go程序的調(diào)用圖箱蟆。此工具在構(gòu)建具有復(fù)雜代碼庫(kù)的大型項(xiàng)目時(shí)特別有用沟绪。它在你想要了解另一個(gè)開發(fā)人員的代碼結(jié)構(gòu)或重建別人的項(xiàng)目時(shí),也很有用空猜。
通過(guò)go-callvis绽慈,開發(fā)人員可以在程序中關(guān)注特定包恨旱;根據(jù)軟件包的分組函數(shù)和根據(jù)類型的方法;以及將軟件包限制到自定義路徑前綴坝疼,并忽略那些包含它們的自定義前綴搜贤。
7.Gonative
Gonative是一個(gè)簡(jiǎn)單的Golang工具,讓你能夠使用本機(jī)庫(kù)構(gòu)建Go工具鏈钝凶,而這可以在使用stdlib軟件包的Cgo-enabled版本時(shí)進(jìn)行交叉編譯仪芒。
Gonative為每個(gè)平臺(tái)下載二進(jìn)制發(fā)行版,并將它們的庫(kù)復(fù)制到正確的位置耕陷。同時(shí)掂名,Gonative設(shè)置正確的mod時(shí)間,以避免不必要的重建哟沫。
不幸的是饺蔑,Gonative在Windows上仍然未經(jīng)測(cè)試。此外南用,也沒(méi)有提供Linux / arm支持膀钠。
8.Grapes
Grapes是一種輕量級(jí)的Golang工具掏湾,旨在輕松地通過(guò)SSH分發(fā)命令裹虫。它由Yaron Sumel編寫和積極維護(hù)。
Grapes不久將支持完整的主機(jī)密鑰驗(yàn)證融击,這是開發(fā)人員應(yīng)該注意到的筑公。
9.Gosimple
Golang linter的偉大之處在于它專注于簡(jiǎn)化Go源代碼。Gosimple始終將最新的Go版本作為目標(biāo)尊浪,因此它需要Go 1.6或更高版本匣屡。
如果有新的Go版本,gosimple會(huì)建議最輕松和最簡(jiǎn)單的方法來(lái)避免復(fù)雜的構(gòu)造拇涤。
10.Go Vendor
Go Vendor是與標(biāo)準(zhǔn)Vendor文件夾兼容的Golang工具捣作。它允許開發(fā)人員通過(guò)govendor add / update從$GOPATH中復(fù)制現(xiàn)有的依賴關(guān)系。你還可以通過(guò)govendor fetch直接提取新的依賴關(guān)系或更新現(xiàn)有的依賴關(guān)系鹅士,以及使用govendor遷移來(lái)移動(dòng)舊的系統(tǒng)券躁。
總結(jié)
如果你有JS / Node背景,那么你還需要學(xué)習(xí)一些新的編程概念掉盅,如協(xié)同程序也拜,通道,嚴(yán)格的類型與編譯趾痘,接口慢哈,結(jié)構(gòu),指針和其他一些差異永票。但是卵贱,一旦你進(jìn)入狀態(tài)滥沫,你會(huì)發(fā)現(xiàn)Golang用起來(lái)更容易,也更快键俱。
譯文鏈接:http://www.codeceo.com/article/golang-framework-ide-tools.html
英文原文:Golang Guide: A List of Top Golang Frameworks, IDEs, and Tools
翻譯作者:碼農(nóng)網(wǎng) – 小峰