我喜歡jetbrains系列的IDE+go插件。不過我要說的是這個問題主要看你的觀點如何。
創(chuàng)新互聯(lián)建站專注于鶴山企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。鶴山網(wǎng)站建設(shè)公司,為鶴山等地區(qū)提供建站服務(wù)。全流程按需開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
說eclipse:
構(gòu)建方式是使用go
install
命令,每一次編譯運行都是go
install。這樣的好處就是如果你有很困棗多的包,下載下來并沒有編譯,這樣每次編譯速度是很快的。廳寬而且(?。ゞo
install
符合go官方的項目結(jié)構(gòu),官方說過了,一個go的項目應(yīng)該是以個gopath,包含src,pkg,bin三個主要目錄。所以說go
install個人認為才是主要的go編譯方式。
說eclipse的缺點:
其實eclipse插件的go編譯方式,還有目錄結(jié)構(gòu),項目結(jié)構(gòu),都是非常完美的!?。。≌娴暮芡昝?!可是,他的代碼提示,太差件!大括號都不能自動補全,gdb
32bit
64bit兼容問題,eclipseC++
沒有html
js插件,需要手動安裝,幾乎不能開箱即用。不過如果你是開發(fā)算法,數(shù)據(jù)處理,還是推薦eclipse的,畢竟其他都無關(guān)緊要。
說jetbrains:
說先說clione肯定不適合,新建項目沒有向?qū)?,?dǎo)致改成go項目各種不開心,比如圖標(biāo)對于我來說就無法接受go
lib
不是小耗子~這是次要的,重要的是各個文件都是灰色的(沒有在cmake中包含的結(jié)果),然后說剩下的,phpstorm這個不說了,估計很少有人插件按在這里,webstorm,體驗也不是很好,idea?體驗很好,可是畢竟比較重,尤其是現(xiàn)在加入了自家的K啥玩意(無意冒犯,沒記住單詞)~可是話說回來,go跟C系列IDE配合才是最佳,跟java系列一點不搭關(guān)系,用idea似乎有點格格不入,但是!idea支持新建項目向?qū)?,lib的圖標(biāo)也很清晰,最后還是選擇idea吧,期待clion的強大起來!
再說jetbrains系列缺點:
插件的構(gòu)建方式是go
buiild
這個讓人很不爽,我們幾乎不確定會構(gòu)建到什么地方去,還要每次設(shè)置一下run配置。這個可能無關(guān)緊要,畢竟不是什么大的毛病,可是go
build不能緩存.a文件,直接構(gòu)建的結(jié)果就是很多第三方包的情況下很慢!所以建議安裝包的時候手動install
一下解決這個問題。自帶代碼格式化,這個格式化跟go
格格不入,總的來說就是蛋疼,心碎,菊花癢。
最后說liteIDE:
輕量級IDE,我可以說是國人GO偉大作品典范,然而默認構(gòu)建也是go
build,項目管理方式不符合go官方標(biāo)準。代碼提示不能自動導(dǎo)入(eclipse也不能),不過如果你的項目是以包為單位的,那么另當(dāng)別論。一定很不錯,畢竟是輕量級專門針對GO的IDE!
說這些,其實還有很大一部分取決于你的項目是用vendor機制管理,還是godeps機制管理依賴關(guān)系。go不像java擁有強大的幾乎天下一統(tǒng)的maven(無意冒犯,暫不評價其他構(gòu)建套件)。
go沒有官方包倉庫。
go沒有官方包管理工具。
go沒有官方自動化構(gòu)建套件。
上面三個沒有是致命要害。導(dǎo)致民間各種百汪伏拆花齊放。
說說我的項目怎么管理
gpm
一個shell工具(windows下你可以用git的bash,或者cygwin~)
我是嚴格艷照官方推薦方式管理go項目,一個go項目一個gopath。系統(tǒng)的gopath只是為了安裝go命令,我沒有配置gobin,意義不大。
項目的依賴跟我的代碼包都在src下(非vendor)
vendor用來存放包的特殊依賴,發(fā)布項目直接把依賴包發(fā)布上去(公網(wǎng)管理則只上傳依賴關(guān)系文件
godeps文件)
資源文件等都放在src目錄同級,編譯文件放在bin,引用直接../引用。
Chocolatey 是一款Windows環(huán)境下的包管理工具。其依賴于微軟旗下的Nuget項目及其核心,可以將其視為Windows的apt-get。
推薦使用win8/win10操作系統(tǒng)。
以管理員身份運行CMD,執(zhí)行以下腳本:
如果你習(xí)慣用PowerShell.exe,也可以使用管理員身份運行PowerShell后執(zhí)行:
舉個栗子,你如果想安裝7Zip,你可以在命令行輸入:
就會自動安裝這個壓縮軟件。
安裝go語言,輸入:
安裝Visual Studio 2013 Ultimate這個巨無霸也是可以的:
軟件列表,可以在Chocolatey的軟件索引查到。
Chocolatey在命令行里的命令明模是 choco ,具體的命令如下:
其中的 choco install 可以簡化為 cinst
理想是美好的,然后現(xiàn)實里那無所不在的墻會讓你崩潰,所以我們要使用一個私有源來解決這個尷尬的問題。
首先我們來看一下默認的源:
可以看到系統(tǒng)中只有一個官方的源,注意一下其中的Priority,來看看官方怎么解釋的。
我們要的目的是加一個seuic內(nèi)部源,并且讓我們的源優(yōu)先級高于官方源,let's go!好奇寶寶難道不問下為什么要內(nèi)部源優(yōu)先?這里主要是要解決choco安裝依賴的問題。舉栗子:比如安裝android-sdk依賴jdk8,指定android-sdk在內(nèi)部源查數(shù)乎找,但是依賴的jdk8則會按照優(yōu)先級挨個源去找。
讓我們來檢查一下吧。
可以用下面的命令來看看我們seuic源上的東西:
cmder是windows下替代cmd的神器,多說無益,一用就知道。安裝完后win+R輸入cmder即可使用。
androidstudio依賴android-sdk和jdk8,android-sdk依賴jdk8。choco安裝時會自動安裝依賴,所以三件套都裝的話只激畢緩要cinst androidstudio -y -s"seuic"即可。這些東西不是要翻墻就是要去oracle網(wǎng)站死磕,現(xiàn)在只要一行命令輕松搞定。
vagrant更適合給開發(fā)大爺們創(chuàng)造一個統(tǒng)一的開發(fā)、測試、接近于完全隔離的環(huán)境,以及提高對高配機的閑置利用。docker更方便地解決了同一機器上的環(huán)境隔離,以及提高運維鍋們解決部署時環(huán)境依賴的效率。
delve 是go語言的調(diào)猛敬試器,delve的目標(biāo)是為go提供一個簡潔、功能齊全的debug工具,delve易于調(diào)用和使用。
為了能夠編譯delve,需要安裝Go 1.10或更高版本
安裝好go后,直接go get即可安裝,更多安裝教程見:
go get github點抗 /go-delve/delve/cmd/dlv
安裝好后,在終端執(zhí)行dlv或者dlv help 會看到dlv的幫助信息,則說明安裝成功
dlv常用命令
delve的目標(biāo)是成為一個簡潔而強大的工具。但如果你不習(xí)慣在編譯語言中使用源碼調(diào)試,則可能令人困惑。本文檔將提供開始調(diào)試go程序所需的全部信息。
調(diào)試例子程序如下
├── go.mod
├── go.sum
├── main.go
├── test
└── utils
├── util.go
└── util_test.go
調(diào)試程序主要有三個文件,main.go、util.go、util_test.go,內(nèi)容如下,比較簡單,go包管理工具使用的是go module,模塊名為test
在vscode debug 的設(shè)置中配置launch.json文件
mode 設(shè)置為debug時,program的內(nèi)容${fileDirname}即可,mode 設(shè)置為exec時,program的值為二進制文件的路徑,通過設(shè)置mode的值,即可調(diào)試源碼和二進制程序(也需要有源碼)。mode模式為auto時,測試了下,vscode 并不能通過program的內(nèi)容來判斷是debug還是exec
遠程調(diào)試時,需信知談要在遠程也有源碼、二進制包和dlv工具
在遠端執(zhí)行dlv命令
dlv debug --headless --listen=:8989 --api-version=2 --accept-multiclient #用degbug方式啟動遠程應(yīng)用程序
dlv exec --headless --listen=:8989 ./test --api-version=2 --accept-multiclient # exec執(zhí)行當(dāng)前目錄下的test二進制文件
--listen:指定調(diào)試端口
--api-version:指定api版本,默認是1
--accept-multiclient:接受多個client調(diào)試
在vscode中線下好源碼,和遠端的源碼結(jié)構(gòu)一致?;鰈aunch.json配置如下:
在vscode中打好斷點后,就可以進行遠程調(diào)試了