01.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 对应的压缩文件直接解压即可使用。

  • 编译环境设置

    根据自身系统要求切换和配置 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 3(以下简称 Sublime)+ GoSublime + gocode 的组合,那么为什么选择这个组合呢?

  • 自动化提示代码,如下图所示

    图 1.5 sublime 自动化提示界面

  • 保存的时候自动格式化代码,让您编写的代码更加美观,符合 Go 的标准。

  • 支持项目管理

    图 1.6 sublime 项目管理界面

  • 支持语法高亮

  • Sublime Text 3 可免费使用,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别。

接下来就开始讲如何安装,下载 Sublime

根据自己相应的系统下载相应的版本,然后打开 Sublime,对于不熟悉 Sublime 的同学可以先看一下这篇文章 Sublime Text 全程指南 或者 sublime text 3入门教程

  1. 打开之后安装 Package Control:Ctrl+` 打开命令行,执行如下代码:

    适用于 Sublime Text 3:

import  urllib.request,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())

适用于 Sublime Text 2:

import  urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp)ifnotos.path.exists(ipp)elseNone;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 包管理
  1. 安装完之后就可以安装 Sublime 的插件了。需安装 GoSublime、SidebarEnhancements 和 Go Build,安装插件之后记得重启 Sublime 生效,Ctrl+Shift+p 打开 Package Controll 输入 pcip(即 “Package Control: Install Package” 的缩写)。

    这个时候看左下角显示正在读取包数据,完成之后出现如下界面

    图 1.8 sublime 安装插件界面

    这个时候输入 GoSublime,按确定就开始安装了。同理应用于 SidebarEnhancements 和 Go Build。

  2. 安装 gocode

    go get -u github.com/nsf/gocode

    gocode 将会安装在默认 $GOBIN

    另外建议安装 gotests(生成测试代码):

    先在 sublime 安装 gotests 插件,再运行:

go get -u -v github.com/cweill/gotests/...
  1. 验证是否安装成功,你可以打开 Sublime,打开 main.go,看看语法是不是高亮了,输入 import 是不是自动化提示了,import "fmt" 之后,输入 fmt. 是不是自动化提示有函数了。

    如果已经出现这个提示,那说明你已经安装完成了,并且完成了自动提示。

    如果没有出现这样的提示,一般就是你的 $PATH 没有配置正确。你可以打开终端,输入 gocode,是不是能够正确运行,如果不行就说明 $PATH 没有配置正确。
    (针对 XP) 有时候在终端能运行成功,但 sublime 无提示或者编译解码错误,请安装 sublime text 3 和 convert utf8 插件试一试

  2. MacOS下 已经设置了 $GOROOT, $GOPATH, $GOBIN,还是没有自动提示怎么办。

    请在 sublime 中使用 command + 9, 然后输入 env 检查 $PATH, GOROOT, $GOPATH, $GOBIN 等变量, 如果没有请采用下面的方法。

    首先建立下面的连接, 然后从 Terminal 中直接启动 sublime

    ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin/sublime

Visual Studio Code

vscode 是微软基于 Electron 和 web 技术构建的开源编辑器, 是一款很强大的编辑器。开源地址:github.com/Microsoft/vscode

1、安装 Visual Studio Code 最新版

官方网站:code.visualstudio.com/
下载 Visual Studio Code 最新版,安装过程略。

2、安装 Go 插件

点击右边的 Extensions 图标
搜索 Go 插件
在插件列表中,选择 Go,进行安装,安装之后,系统会提示重启 Visual Studio Code。

建议把自动保存功能开启。开启方法为:选择菜单 File,点击 Auto save。

vscode 代码设置可用于 Go 扩展。这些都可以在用户的喜好来设置或工作区设置(.vscode/settings.json)。

打开首选项-用户设置 settings.json:


{
    "go.buildOnSave": true,
    "go.lintOnSave": true,
    "go.vetOnSave": true,
    "go.buildFlags": [],
    "go.lintFlags": [],
    "go.vetFlags": [],
    "go.coverOnSave": false,
    "go.useCodeSnippetsOnFunctionSuggest": false,
    "go.formatOnSave": true,
    //goimports
    "go.formatTool": "goreturns",
    "go.goroot": "",//你的Goroot
    "go.gopath": "",//你的Gopath
}

接着安装依赖包支持 (网络不稳定,请直接到 Github Golang 下载再移动到相关目录):

go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/zmb3/gogetdoc
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v github.com/cweill/gotests/...

vscode 还有一项很强大的功能就是断点调试,结合 delve 可以很好的进行 Go 代码调试


go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv

brew install go-delve/delve/delve(mac可选)

如果有问题再来一遍:

go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv

注意: 修改 "dlv-cert" 证书, 选择 "显示简介"->"信任"->"代码签名" 修改为: 始终信任

打开首选项-工作区设置, 配置 launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "main.go",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "remotePath": "",
            "port": 2345,
            "host": "127.0.0.1",
            "program": "${workspaceRoot}",//工作空间路径
            "env": {},
            "args": [],
            "showLog": true
        }
    ]
}

Atom

Atom 是 Github 基于 Electron 和 web 技术构建的开源编辑器, 是一款很漂亮强大的编辑器缺点是速度比较慢。

首先要先安装下 Atom,下载地址: atom.io/

然后安装 go-plus 插件:

go-plus 是 Atom 上面的一款开源的 go 语言开发环境的的插件

它需要依赖下面的 go 语言工具:
1.autocomplete-go :gocode的代码自动提示
2.gofmt :使用goftm,goimports,goturns
3.builder-go:go-install 和go-test,验证代码,给出建议
4.gometalinet-linter:goline,vet,gotype的检查
5.navigator-godef:godef
6.tester-goo :go test
7.gorename :rename

在 Atom 中的 Preference 中可以找到 install 菜单,输入 go-plus, 然后点击安装 (install)

就会开始安装 go-plus , go-plus 插件会自动安装对应的依赖插件,如果没有安装对应的 go 的类库会自动运行: go get 安装。

GoLand

GoLand 是 JetBrains 公司推出的 Go 语言集成开发环境,是 Idea Go 插件的强化版。GoLand 同样基于 IntelliJ 平台开发,支持 JetBrains 的插件体系。

下载地址: www.jetbrains.com/go/

Vim

Vim 是从 vi 发展出来的一个文本编辑器, 代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

vim-go 是 vim 上面的一款开源的 go 语言使用最为广泛开发环境的的插件

插件地址:github.com/fatih/vim-go

vim 的插件管理主要有PathogenVundle
,但是其作用的方面不同。
pathogen 是为了解决每一个插件安装后文件分散到多个目录不好管理而存在的。vundle 是为了解决自动搜索及下载插件而存在的。
这两个插件可同时使用。

1.安装 Vundle

mkdir ~/.vim/bundle
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

修改 .vimrc,将 Vundle 的相关配置置在最开始处 (详细参考 Vundle 的介绍文档)

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

2.安装 Vim-go

修改 ~/.vimrc,在 vundle#begin 和 vundle#end 间增加一行:


Plugin 'fatih/vim-go'

在 Vim 内执行: PluginInstall

3.安装 YCM(Your Complete Me) 进行自动补全
~/.vimrc 中添加一行:


Plugin 'Valloric/YouCompleteMe'

在 Vim内执行: PluginInstall

图 1.9 VIM 编辑器自动化提示 Go 界面

接着我们继续配置 vim:

  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 默认安装到 $GOPATH/bin 下面。

  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 的乐趣。

更多 VIM 设定, 可参考链接

Emacs

Emacs 传说中的神器,她不仅仅是一个编辑器,它是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。

图 1.10 Emacs 编辑 Go 主界面

  1. 配置 Emacs 高亮显示

    cp $GOROOT/misc/emacs/* ~/.emacs.d/
  2. 安装 Gocode

    go get -u github.com/nsf/gocode

    gocode 默认安装到 $GOBIN 里面下面。

  3. 配置 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"
  4. 需要安装 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/AutoComplet...

  5. 配置 .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"))
  6. 恭喜你,你现在可以体验在神器中开发 Go 的乐趣。默认 speedbar 是关闭的,如果打开需要把 ;; (speedbar 1) 前面的注释去掉,或者也可以通过 M-x speedbar 手动开启。

Eclipse

Eclipse 也是非常常用的开发利器,以下介绍如何使用 Eclipse 来编写 Go 程序。

图 1.11 Eclipse 编辑 Go 的主界面

  1. 首先下载并安装好 Eclipse

  2. 下载 goclipse 插件

    code.google.com/p/goclipse/wiki/Ins...

  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 设置 Go 的一些基础信息

    (2).配置 Gocode(可选,代码补全),设置 Gocode 路径为之前生成的 gocode.exe 文件

    图 1.13 设置 gocode 信息

    (3).配置 GDB(可选,做调试用),设置 GDB 路径为 MingW 安装目录下的 gdb.exe 文件

    图 1.14 设置 GDB 信息

  6. 测试是否成功

    新建一个 go 工程,再建立一个 hello.go。如下图:

    图 1.15 新建项目编辑文件

    调试如下(要在 console 中用输入命令来调试):

    图 1.16 调试 Go 程序

IntelliJ IDEA

熟悉 Java 的读者应该对于 idea 不陌生,idea 是通过一个插件来支持 go 语言的高亮语法,代码提示和重构实现。

  1. 先下载 idea,idea 支持多平台:win, mac, linux,如果有钱就买个正式版,如果不行就使用社区免费版,对于只是开发 Go 语言来说免费版足够用了

  2. 安装 Go 插件,点击菜单 File 中的 Setting,找到 Plugins, 点击, Broswer repo 按钮。国内的用户可能会报错,自己解决哈。

  3. 这时候会看见很多插件,搜索找到 Golang, 双击, download and install。等到 golang 那一行后面出现 Downloaded 标志后, 点 OK。

    然后点 Apply .这时候 IDE 会要求你重启。

  4. 重启完毕后,创建新项目会发现已经可以创建 golang 项目了:

    下一步, 会要求你输入 go sdk 的位置,一般都安装在 C:\Go,linux 和 mac 根据自己的安装目录设置,选中目录确定,就可以了。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~