這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
本文介紹 Windows7 x64 基於 IntelliJ IDEA 搭建 Go 語言開發環境。主要是一些操作過程以及簡單文字描述,如有不清楚的地方,歡迎指正。所有軟體使用當前(2016.12.02)最新版本,舊版或新版可能存在細微差異。
一、網路代理程式軟體 cntlm
從 這裡 下載最新 0.92.3 版本 cntlm。cntlm 作用是方便在 Windows 下執行 go get 。參照以下注意事項,並保留監聽連接埠為預設的 3128,其它具體安裝及配置參考《cntlm內網代理的代理》。
注意事項:
1) 確保 cntlm.ini 有以下這些配置項
Username <工號>
Domain china
Auth NTLM
PassNT <按實際配置>
PassLM <按實際配置>
Proxy XXXX:8080
NoProxy localhost, 127.0.0., 10., 192.168.*
Listen 3128
2) 必須安裝在預設路徑 C:\Program Files (x86)\Cntlm,非預設路徑會有 問題
3) Windows 下的 cntlm 服務不穩定,有時需手動重啟下服務恢複,原因未知。我在案頭建立了一個cntlm.bat,如果網路訪問有問題,執行 cntlm.bat 重啟下服務(可以考慮將 cntlm 放在 Linux 或 docker 中運行,服務會比較穩定。我就把 cntlm 放在 docker 中運行,如果你已有 docker 環境,可以找我要鏡像)。
cntlm.bat 檔案內容如下:
net stop cntlm
net start cntlm
4) 安裝配置後,記得啟動服務,可直接運行 cntlm.bat
二、Go 1.7.4
下載 go1.7.4.windows-amd64.msi,保留預設安裝路徑(C:\Go\),一路 Next 。
配置環境變數(右擊 電腦 -> 進階系統設定 -> 進階 -> 環境變數):
1) 添加環境變數 GOPATH ,值為 D:\Codes\go
2) 將 D:\Codes\go\bin 添加到 PATH,方便執行其目錄下的程式
三、Git v2.11.0.windows.1
下載 64-bit Git for Windows Setup,保留預設安裝路徑(C:\Program Files\Git)及所有預設配置,一路 Next。
開啟 Git Bash(在案頭右擊滑鼠 -> Git Bash here),執行 Git 基本配置:
1) 使用者和郵箱
git config --global user.name XXXX
git config --global user.email XXXX
2) 支援長路徑
git config --global core.longpaths true
3) 匯出和提交時不做文字格式設定轉換
git config --global core.autocrlf false
4) 配置網路代理程式,使用上面 cntlm 服務
git config --global http.proxy 127.0.0.1:3128
5) 不校正ssl認證
git config --global http.sslVerify false
四、Go 命令列工具
這篇文章 提到 10+ 個命令列工具,其中比較有用的是 goimports 和 golint,以下以安裝這兩個工具為例,如需安裝其它工具,操作步驟類似。
golang.org/x 倉庫即使 FQ 也訪問不了,一般做法是從 GitHub 鏡像倉庫下載,放置在 golang.org/x 對應路徑,再執行安裝。Git Bash 中執行:
1) 安裝 goimports
export GOPATH="D:\Codes\go"
git clone https://github.com/golang/tools.git $GOPATH/src/golang.org/x/tools
go install golang.org/x/tools/cmd/goimports
2) 使用 go get 安裝 golint(依賴上一步下載的 golang.org/x/tools 包)
go get -v github.com/golang/lint/golint
如果執行失敗,排查上述操作步驟並重啟 cntlm 服務,開啟一個新的 Git Bash 試試;執行成功會產生兩個可執行程式(後面 File Watchers 外掛程式會用到)。
註:開發過程,依賴 GitHub 的包,也可以使用 go get 下載。
五、IntelliJ IDEA 2016.3
下載 IntelliJ IDEA 免費版,保留預設安裝路徑,一路 Next。
安裝後,運行 IDEA:
1) 如果之前安裝過舊版本,繼承之前配置選擇第1項;否則預設第2項即可
2) 選擇自己喜歡的皮膚,其它一路 Next
六、安裝 IDEA 外掛程式
6.1 訪問外掛程式倉庫需要配置網路代理程式(安裝完外掛程式後,可以去掉配置)
碰到這樣的對話方塊一律"Accept"
或者勾選以下複選框
6.2 搜尋並安裝 Go 和 File Watchers,2個外掛程式安裝完後重啟 IDEA
6.3 配置 Go 外掛程式
6.4 建立 hello 工程
工程路徑沒有要求,建議先放在 D:\Codes\go\src\hello
注意:.idea 和 hello.iml 由 IDEA 自動產生和管理,不要手工修改。
建立 go 源檔案 main.go
寫一段簡單代碼,驗證運行是否正常
運行結果
6.5 配置 File Watchers 外掛程式
File Watchers 是工程層級的設定,所以要在上一步工程的基礎上操作
File -> Settings... -> Tools -> File Watchers
-w $FilePath$
-set_exit_status $FilePath$
將File Watchers 設定匯出,儲存在使用者 home 目錄下
以後建立新工程,直接匯入該配置,避免重複配置(點第1個按鈕切換到使用者 home 目錄)
編輯 .go 檔案後儲存,goimports 會對代碼進行格式化(這裡僅縮排對齊)
格式化後效果如下
golint 會檢查編程風格(這裡提示變數名不要使用底線)
七、IDEA 使用
7.1 回合組態
已存在一個配置項 "Build main.go and run"(這是剛才執行運行產生的)
點擊左上方 "+" 按鈕,可以建立新的回合組態
配置項命名為 hello,以 Package 方式運行 hello 包,可執行程式存放目錄、運行目錄設定為 D:\Codes\go\bin
下拉框選擇 hello,點擊執行按鈕
產生的可執行檔放置到指定輸出目錄
7.2 調試
滑鼠左擊編輯框行號位置,可以打斷點,點擊調試按鈕啟動調試
IDEA 使用了 Go 外掛程式內建的 delve 工具進行調試
點擊 "Debugger" 標籤頁可以查看調用棧,變數等資訊
7.3 libraries 設定
IDEA 的 Go 工程預設會載入 GOPATH 環境變數,GOPATH 可以配置多個目錄,允許代碼分散在多個目錄中。
關於如何組織代碼,是個持續爭論的話題...
雖然程式碼群組織方式靈活,但也存在麻煩。在版本控制系統(svn,git)中,如果代碼分散在多個地方,很容易漏提交 -- 自己環境上能夠啟動並執行工程,遺漏提交其它目錄下的依賴包,別人匯出的代碼運行不了。一種方法是不使用 GOPATH,依賴包通過 vendor 機制和代碼放在唯一目錄下,也提交到版本庫,IDEA 工程僅添加版本庫匯出目錄(bin/pkg/src的父目錄)到 "Project libraries"。
八、IDEA 的一些設定
從 File -> Settings... 開啟設定視窗
1) 不開啟上次工程
Appearance & Behavior -> System Settings
去掉 Startup/Shutdown -> Reopen last project on startup
2) 退出時不需確認
Appearance & Behavior -> System Settings
去掉 Startup/Shutdown -> Confirm application exit
3) 去掉拼字檢查
Editor -> Inspections
去掉 Spelling -> Typo
4) 顯示行號
Editor -> General -> Appearance
勾選 Show line numbers
5) 編輯器字型
Editor -> Colors & Fonts -> Fonts
6) 控制台字型
Editor -> Colors & Fonts -> Console Fonts
7) 分行符號
Editor > Code Style
Line Separator (for new files),最好設定為 Unix and OSX(\n)
8) 縮排格式
Editor -> Code Style -> Go
9) 終端
Tools -> Terminal
Shell Path 設定為 "C:\Program Files\Git\bin\bash.exe" --login -i
Git Bash 提供比 cmd.exe 多得多的功能,牆裂建議將終端設定為 Git Bash,開發過程可以在其中執行很多命令!
遺留:
IDEA 還支援 MacOS 和 Linux,通過 X Server 能夠在 Windows 遠程運行 Linux IDEA,方便調試 Linux 上的代碼,後續再補充。