官术网_书友最值得收藏!

  • Go Web編程
  • 謝孟軍
  • 3038字
  • 2018-12-27 18:47:50

1.4 Go語言開發工具

本節將介紹幾個開發工具,它們都具有自動化提示和自動化fmt功能。因為它們都是跨平臺的,所以安裝步驟都是通用的。

LiteIDE

LiteIDE是一款專門為Go語言開發的跨平臺輕量級集成開發環境(IDE),由visualfc編寫,其主界面如圖1-4所示。

圖1.4 LiteIDE主界面

LiteIDE的主要特點如下。

1.支持主流操作系統

● Windows

● Linux

● Mac OS X

2.Go語言編譯環境管理和切換

● 管理和切換多個Go語言編譯環境

● 支持Go語言交叉編譯

3.與Go語言標準一致的項目管理方式

● 基于GOPATH的包瀏覽器

● 基于GOPATH的編譯系統

● 基于GOPATH的API文檔檢索

4.Go語言的編輯支持

● 類瀏覽器和大綱顯示

● Gocode(代碼自動完成工具)的完美支持

● Go語言文檔查看和API快速檢索

● 代碼表達式信息顯示F1

● 源代碼定義跳轉支持F2

● Gdb斷點和調試支持

● gofmt自動格式化支持

5.其他特征

● 支持多國語言界面顯示

● 完全插件體系結構

● 支持編輯器配色方案

● 基于Kate的語法顯示支持

● 基于全文的單詞自動完成

● 支持鍵盤快捷鍵綁定方案

● Markdown文檔編輯支持

6.實時預覽和同步顯示

7.自定義CSS顯示

8.可導出HTML和PDF文檔

9.批量轉換/合并為HTML/PDF文檔

LiteIDE安裝配置

LiteIDE安裝

● 下載地址 code.google.com/p/golangide

● 源碼地址 github.com/visualfc/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所示。

圖1.5 Sublime自動化提示界面

● 保存的時候自動格式化代碼,使編寫的代碼更加美觀,符合Go語言的標準。

● 支持項目管理,其界面如圖1.6所示。

圖1.6 Sublime項目管理界面

● 支持語法高亮顯示。

● Sublime Text 2可免費使用,只是保存次數達到一定數量之后,就會提示是否購買,單擊取消繼續用,和正式注冊版本沒有任何區別。

接下來介紹如何安裝:首先下載 Sublime,根據自己的系統下載相應的版本,然后打開Sublime。

1.打開之后安裝 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.wbo
    nd.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text
    to finish installation'

這時重啟Sublime,可以發現在菜單欄多了一個“Package Control”欄目,如圖1.7所示,說明Package Control已經成功安裝。

圖1.7 Sublime包管理

2.安裝gocode和MarGo,打開終端運行如下代碼(需要git)。

        go get github.com/nsf/gocode
        go get github.com/DisposaBoy/MarGo

這個時候我們會發現在$GOPATH/bin下面多了兩個可執行文件:gocode和MarGo,這兩個文件會在GoSublime加載時自動啟動。

3.安裝完之后就可以安裝Sublime的插件了。需安裝GoSublime、SidebarEnhancements和 Go Build,安裝插件之后記得重啟 Sublime 生效,利用 Ctrl+Shift+p 鍵打開 Package Controll,輸入pcip(即“Package Control: Install Package”的縮寫)。

這個時候看左下角顯示正在讀取包數據,完成之后出現如圖1.8所示的界面。

圖1.8 Sublime安裝插件界面

再輸入GoSublime,按“確定”按鈕即可開始安裝。同理,應用于SidebarEnhancements和Go Build。

4.驗證是否安裝成功,你可以打開 Sublime,打開 main.go,看看語法是否高亮顯示,輸入import是否自動化提示,import "fmt"之后,輸入fmt.是否自動化提示有函數。

如果已經出現該提示,說明你已經安裝完成,并且完成了自動提示。

如果沒有出現該提示,一般情況是$PATH 沒有配置正確。你可以打開終端,輸入gocode,看是否能夠正確運行,如果不行,就說明$PATH沒有配置正確。

Vim

Vim 是從 vi 發展出來的一個文本編輯器,代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,被廣大程序員使用,其編輯器自動化提示Go語言界面如圖1.9所示。

1.配置vim高亮顯示

        cp -r $GOROOT/misc/vim/* ~/.vim/

2.在~/.vimrc文件中增加語法高亮顯示

        filetype plugin indent on
        syntax on

3.安裝Gocode

        go get -u github.com/nsf/gocode

Gocode默認安裝到$GOBIN下。

圖1.9 Vim編輯器自動化提示Go語言界面

4.配置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能訪問的路徑。

5.恭喜你,安裝完成,你現在可以使用e main.go體驗一下開發Go語言的樂趣。

Emacs

Emacs是傳說中的神器,它不僅僅是一個編輯器,還是一個整合環境,或可稱它為集成開發環境,這些功能就像讓使用者置身于全功能的操作系統中,其主界面如圖1.10所示。

圖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)

詳細信息可參考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 "http://\\.\\|//[^\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所示。

圖1.11 Eclipse編輯Go語言的主界面

1.首先下載并安裝好Eclipse

2.下載goeclipse插件(code.google.com/p/goclipse/wiki/InstallationInstructions)

3.下載gocode,用于go的代碼補全提示

gocode的github地址如下。

        https://github.com/nsf/gocode

在Windows下要安裝git,通常用msysgit,再在cmd下安裝。

        go get -u github.com/nsf/gocode

也可以下載代碼,直接用go build來編譯,生成gocode.exe。

4.下載MinGW并按要求裝好

5.配置插件

Windows->Reference->Go

(1)配置Go語言的編譯器,其基礎信息如圖1.12所示。

圖1.12 設置Go語言的一些基礎信息

(2)配置Gocode(可選,代碼補全),設置Gocode路徑為之前生成的gocode.exe文件,如圖1.13所示。

圖1.13 設置gocode信息

(3)配置GDB(可選,做調試用),設置GDB路徑為MingW安裝目錄下的gdb.exe文件,如圖1.14所示。

圖1.14 設置GDB信息

6.測試是否成功

新建一個Go語言工程,再建立一個hello.go,如圖1.15所示。

圖1.15 新建項目編輯文件

在console中用輸入命令調試,如圖1.16所示。

圖1.16 調試Go語言程序

IntelliJ IDEA

熟悉Java語言的讀者應該對IDEA不陌生,IDEA是通過一個插件來支持Go語言的高亮語法、代碼提示和重構實現。

1.先下載IDEA,其主界面如圖1.17所示,IDEA支持多平臺:Win、Mac和Linux,有正式版和社區免費版可使用,對于只是開發Go語言來說社區免費版足夠用。

圖1.17 IDEA主界面

2.安裝Go語言插件,單擊菜單File中的Setting,找到Plugins,單擊Broswer repo按鈕。由于網絡原因,用戶可能需要一定的技術手段才能安裝,其插件管理器如圖1.18所示。

圖1.18 IDEA插件管理器

3.這時候會看見很多插件,搜索找到Golang,雙擊,下載并安裝。等到golang那一行后面出現Downloaded標志后,單擊OK按鈕,如圖1.19所示。

圖1.19 Go語言插件

然后單擊Apply,這時候IDE會要求你重啟。

4.重啟完畢后,創建新項目會發現已經可以創建golang項目,如圖1.20所示。

圖1.20 IDEA新建Go語言項目界面

下一步,會要求你輸入 go sdk的位置,一般都安裝在C:\Go,Linux和Mac根據自己的安裝目錄設置,選中目錄確定,就可以了。

主站蜘蛛池模板: 巨野县| 紫阳县| 宁乡县| 柏乡县| 桐柏县| 五家渠市| 修武县| 都江堰市| 会宁县| 房山区| 神池县| 沙湾县| 昌吉市| 故城县| 怀仁县| 汽车| 榕江县| 乐平市| 岢岚县| 三亚市| 桂平市| 三亚市| 吉林市| 宁津县| 江华| 黄石市| 东城区| 华阴市| 海安县| 左权县| 莲花县| 高密市| 阿图什市| 平果县| 淮南市| 伊金霍洛旗| 明水县| 巨鹿县| 永嘉县| 洛扎县| 滁州市|