1.4 Go開發工具
本節我將介紹幾個開發工具,它們都具有自動化提示,自動化fmt功能。因爲它們都是跨平臺的,所以安裝步驟之類的都是通用的。
LiteIDE
LiteIDE是一款專門爲Go語言開發的跨平臺輕量級集成開發環境(IDE),由visualfc編寫。
圖1.4 LiteIDE主界面
LiteIDE主要特點:
- 支持主流操作系統
- Windows
- Linux
- MacOS X
- Go編譯環境管理和切換
- 管理和切換多個Go編譯環境
- 支持Go語言交叉編譯
- 與Go標準一致的項目管理方式
- 基於GOPATH的包瀏覽器
- 基於GOPATH的編譯系統
- 基於GOPATH的Api文檔檢索
- Go語言的編輯支持
- 類瀏覽器和大綱顯示
- Gocode(代碼自動完成工具)的完美支持
- Go語言文檔查看和Api快速檢索
- 代碼表達式信息顯示
F1
- 源代碼定義跳轉支持
F2
- Gdb斷點和調試支持
- gofmt自動格式化支持
- 其他特徵
- 支持多國語言界面顯示
- 完全插件體系結構
- 支持編輯器配色方案
- 基於Kate的語法顯示支持
- 基於全文的單詞自動完成
- 支持鍵盤快捷鍵綁定方案
- Markdown文檔編輯支持
- 實時預覽和同步顯示
- 自定義CSS顯示
- 可導出HTML和PDF文檔
- 批量轉換/合併爲HTML/PDF文檔
LiteIDE安裝配置
-
LiteIDE安裝
首先安裝好Go語言環境,然後根據操作系統下載LiteIDE對應的壓縮文件直接解壓即可使用。
-
安裝Gocode
啓用Go語言的輸入自動完成需要安裝Gocode:
go get -u github.com/nsf/gocode
-
編譯環境設置
根據自身系統要求切換和配置LiteIDE當前使用的環境變量。
以Windows操作系統,64位Go語言爲例, 工具欄的環境配置中選擇win64,點
編輯環境
,進入LiteIDE編輯win64.env文件GOROOT=c:\go GOBIN= GOARCH=amd64 GOOS=windows CGO_ENABLED=1 PATH=%GOBIN%;%GOROOT%\bin;%PATH% 。。。
將其中的
GOROOT=c:\go
修改爲當前Go安裝路徑,存盤即可,如果有MinGW64,可以將c:\MinGW64\bin
加入PATH中以便go調用gcc支持CGO編譯。以Linux操作系統,64位Go語言爲例, 工具欄的環境配置中選擇linux64,點
編輯環境
,進入LiteIDE編輯linux64.env文件GOROOT=$HOME/go GOBIN= GOARCH=amd64 GOOS=linux CGO_ENABLED=1 PATH=$GOBIN:$GOROOT/bin:$PATH 。。。
將其中的
GOROOT=$HOME/go
修改爲當前Go安裝路徑,存盤即可。 -
GOPATH設置
Go語言的工具鏈使用GOPATH設置,是Go語言開發的項目路徑列表,在命令行中輸入(在LiteIDE中也可以
Ctrl+,
直接輸入)go help gopath
快速查看GOPATH文檔。在LiteIDE中可以方便的查看和設置GOPATH。通過
菜單-查看-GOPATH
設置,可以查看系統中已存在的GOPATH列表, 同時可根據需要添加項目目錄到自定義GOPATH列表中。
Sublime Text
這裏將介紹Sublime Text 2(以下簡稱Sublime)+GoSublime+gocode+MarGo的組合,那麼爲什麼選擇這個組合呢?
-
自動化提示代碼,如下圖所示
圖1.5 sublime自動化提示界面
-
保存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標準。
-
支持項目管理
圖1.6 sublime項目管理界面
-
支持語法高亮
-
Sublime Text 2可免費使用,只是保存次數達到一定數量之後就會提示是否購買,點擊取消繼續用,和正式註冊版本沒有任何區別。
接下來就開始講如何安裝,下載Sublime
根據自己相應的系統下載相應的版本,然後打開Sublime,對於不熟悉Sublime的同學可以先看一下這篇文章Sublime Text 2 入門及技巧
-
打開之後安裝 Package Control:Ctrl+ 打開命令行,執行如下代碼:
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'
這個時候重啓一下Sublime,可以發現在在菜單欄多了一個如下的欄目,說明Package Control已經安裝成功了。
圖1.7 sublime包管理
-
接下來安裝gocode和MarGo。 打開終端運行如下代碼(需要git)
go get github.com/nsf/gocode go get github.com/DisposaBoy/MarGo
這個時候我們會發現在$GOPATH/bin
下面多了兩個可執行文件,gocode和MarGo,這兩個文件會在GoSublime加載時自動啓動。
- 安裝完之後就可以安裝Sublime的插件了。需安裝GoSublime、SidebarEnhancements和Go Build,安裝插件之後記得重啓Sublime生效,Ctrl+Shift+p打開Package Controll 輸入
pcip
(即“Package Control: Install Package”的縮寫)。
這個時候看左下角顯示正在讀取包數據,完成之後出現如下界面
圖1.8 sublime安裝插件界面
這個時候輸入GoSublime,按確定就開始安裝了。同理應用於SidebarEnhancements和Go Build。
- 驗證是否安裝成功,你可以打開Sublime,打開main.go,看看語法是不是高亮了,輸入
import
是不是自動化提示了,import "fmt"
之後,輸入fmt.
是不是自動化提示有函數了。
如果已經出現這個提示,那說明你已經安裝完成了,並且完成了自動提示。
如果沒有出現這樣的提示,一般就是你的$PATH
沒有配置正確。你可以打開終端,輸入gocode,是不是能夠正確運行,如果不行就說明$PATH
沒有配置正確。
Vim
Vim是從vi發展出來的一個文本編輯器, 代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。
圖1.9 VIM編輯器自動化提示Go界面
-
配置vim高亮顯示
cp -r $GOROOT/misc/vim/* ~/.vim/
-
在~/.vimrc文件中增加語法高亮顯示
filetype plugin indent on syntax on
-
安裝Gocode
go get -u github.com/nsf/gocode
gocode默認安裝到
$GOBIN
下面。 -
配置Gocode
~ cd $GOPATH/src/github.com/nsf/gocode/vim ~ ./update.bash ~ gocode set propose-builtins true propose-builtins true ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" lib-path "/home/border/gocode/pkg/linux_amd64" ~ gocode set propose-builtins true lib-path "/home/border/gocode/pkg/linux_amd64"
gocode set裏面的兩個參數的含意說明:
propose-builtins:是否自動提示Go的內置函數、類型和常量,默認爲false,不提示。
lib-path:默認情況下,gocode只會搜索$GOPATH/pkg/$GOOS_$GOARCH 和 $GOROOT/pkg/$GOOS_$GOARCH目錄下的包,當然這個設置就是可以設置我們額外的lib能訪問的路徑
-
恭喜你,安裝完成,你現在可以使用
:e main.go
體驗一下開發Go的樂趣。
Emacs
Emacs傳說中的神器,她不僅僅是一個編輯器,它是一個整合環境,或可稱它爲集成開發環境,這些功能如讓使用者置身於全功能的操作系統中。
圖1.10 Emacs編輯Go主界面
-
配置Emacs高亮顯示
cp $GOROOT/misc/emacs/* ~/.emacs.d/
-
安裝Gocode
go get -u github.com/nsf/gocode
gocode默認安裝到
$GOBIN
裏面下面。 -
配置Gocode
~ cd $GOPATH/src/github.com/nsf/gocode/emacs ~ cp go-autocomplete.el ~/.emacs.d/ ~ gocode set propose-builtins true propose-builtins true ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" // 換爲你自己的路徑 lib-path "/home/border/gocode/pkg/linux_amd64" ~ gocode set propose-builtins true lib-path "/home/border/gocode/pkg/linux_amd64"
-
需要安裝 Auto Completion
下載AutoComplete並解壓
~ make install DIR=$HOME/.emacs.d/auto-complete
配置~/.emacs文件
;;auto-complete
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/ac-dict")
(ac-config-default)
(local-set-key (kbd "M-/") 'semantic-complete-analyze-inline)
(local-set-key "." 'semantic-complete-self-insert)
(local-set-key ">" 'semantic-complete-self-insert)
詳細信息參考: http://www.emacswiki.org/emacs/AutoComplete
-
配置.emacs
;; golang mode (require 'go-mode-load) (require 'go-autocomplete) ;; speedbar ;; (speedbar 1) (speedbar-add-supported-extension ".go") (add-hook 'go-mode-hook '(lambda () ;; gocode (auto-complete-mode 1) (setq ac-sources '(ac-source-go)) ;; Imenu & Speedbar (setq imenu-generic-expression '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1) ("func" "^func *\\(.*\\) {" 1))) (imenu-add-to-menubar "Index") ;; Outline mode (make-local-variable 'outline-regexp) (setq outline-regexp "//\\.\\|//[^\r\n\f][^\r\n\f]\\|pack\\|func\\|impo\\|cons\\|var.\\|type\\|\t\t*....") (outline-minor-mode 1) (local-set-key "\M-a" 'outline-previous-visible-heading) (local-set-key "\M-e" 'outline-next-visible-heading) ;; Menu bar (require 'easymenu) (defconst go-hooked-menu '("Go tools" ["Go run buffer" go t] ["Go reformat buffer" go-fmt-buffer t] ["Go check buffer" go-fix-buffer t])) (easy-menu-define go-added-menu (current-local-map) "Go tools" go-hooked-menu) ;; Other (setq show-trailing-whitespace t) )) ;; helper function (defun go () "run current buffer" (interactive) (compile (concat "go run " (buffer-file-name)))) ;; helper function (defun go-fmt-buffer () "run gofmt on current buffer" (interactive) (if buffer-read-only (progn (ding) (message "Buffer is read only")) (let ((p (line-number-at-pos)) (filename (buffer-file-name)) (old-max-mini-window-height max-mini-window-height)) (show-all) (if (get-buffer "*Go Reformat Errors*") (progn (delete-windows-on "*Go Reformat Errors*") (kill-buffer "*Go Reformat Errors*"))) (setq max-mini-window-height 1) (if (= 0 (shell-command-on-region (point-min) (point-max) "gofmt" "*Go Reformat Output*" nil "*Go Reformat Errors*" t)) (progn (erase-buffer) (insert-buffer-substring "*Go Reformat Output*") (goto-char (point-min)) (forward-line (1- p))) (with-current-buffer "*Go Reformat Errors*" (progn (goto-char (point-min)) (while (re-search-forward "<standard input>" nil t) (replace-match filename)) (goto-char (point-min)) (compilation-mode)))) (setq max-mini-window-height old-max-mini-window-height) (delete-windows-on "*Go Reformat Output*") (kill-buffer "*Go Reformat Output*")))) ;; helper function (defun go-fix-buffer () "run gofix on current buffer" (interactive) (show-all) (shell-command-on-region (point-min) (point-max) "go tool fix -diff"))
-
恭喜你,你現在可以體驗在神器中開發Go的樂趣。默認speedbar是關閉的,如果打開需要把 ;; (speedbar 1) 前面的註釋去掉,或者也可以通過 M-x speedbar 手動開啓。
Eclipse
Eclipse也是非常常用的開發利器,以下介紹如何使用Eclipse來編寫Go程序。
圖1.11 Eclipse編輯Go的主界面
-
首先下載並安裝好Eclipse
-
下載goeclipse插件
http://code.google.com/p/goclipse/wiki/InstallationInstructions
-
下載gocode,用於go的代碼補全提示
gocode的github地址:
https://github.com/nsf/gocode
在windows下要安裝git,通常用msysgit
再在cmd下安裝:
go get -u github.com/nsf/gocode
也可以下載代碼,直接用go build來編譯,會生成gocode.exe
-
下載MinGW並按要求裝好
-
配置插件
Windows->Reference->Go
(1).配置Go的編譯器
圖1.12 設置Go的一些基礎信息
(2).配置Gocode(可選,代碼補全),設置Gocode路徑爲之前生成的gocode.exe文件
圖1.13 設置gocode信息
(3).配置GDB(可選,做調試用),設置GDB路徑爲MingW安裝目錄下的gdb.exe文件
圖1.14 設置GDB信息
-
測試是否成功
新建一個go工程,再建立一個hello.go。如下圖:
圖1.15 新建項目編輯文件
調試如下(要在console中用輸入命令來調試):
圖1.16 調試Go程序
IntelliJ IDEA
熟悉Java的讀者應該對於idea不陌生,idea是通過一個插件來支持go語言的高亮語法,代碼提示和重構實現。
-
先下載idea,idea支持多平臺:win,mac,linux,如果有錢就買個正式版,如果不行就使用社區免費版,對於只是開發Go語言來說免費版足夠用了
-
安裝Go插件,點擊菜單File中的Setting,找到Plugins,點擊,Broswer repo按鈕。國內的用戶可能會報錯,自己解決哈。
-
這時候會看見很多插件,搜索找到Golang,雙擊,download and install。等到golang那一行後面出現Downloaded標誌後,點OK。
然後點 Apply .這時候IDE會要求你重啓。
-
重啓完畢後,創建新項目會發現已經可以創建golang項目了:
下一步,會要求你輸入 go sdk的位置,一般都安裝在C:\Go,linux和mac根據自己的安裝目錄設置,選中目錄確定,就可以了。
轉自:http://studygolang.com/articles/1678