update develop tools zh/01.4m
This commit is contained in:
396
zh/01.4.md
396
zh/01.4.md
@@ -1,6 +1,199 @@
|
||||
# 1.4 Go开发工具
|
||||
|
||||
本节我将介绍几个开发工具,它们都具有自动化提示,自动化fmt功能。因为它们都是跨平台的,所以安装步骤之类的都是通用的。
|
||||
本节我将介绍几个开发工具,它们都具有自动化补全,自动化 fmt 和检查等功能。因为它们都是跨平台的,所以安装步骤之类的都是通用的。
|
||||
|
||||
## Visual Studio Code
|
||||
|
||||
Vscode 是微软基于 Electron 和 Web 技术构建的开源编辑器, 是一款非常强大的编辑器。
|
||||
而且目前 vscode-go 已升级为 Go 官方维护的工具, 也是当前免费开源的首选开发工具.
|
||||
|
||||
开源地址: https://github.com/Microsoft/vscode
|
||||
|
||||
1、安装Visual Studio Code 最新版
|
||||
|
||||
官方网站:https://code.visualstudio.com
|
||||
下载 Visual Studio Code 最新版,安装过程略。
|
||||
|
||||
2、安装 Go 插件
|
||||
|
||||
点击右边的 Extensions/扩展 图标
|
||||
搜索 `Go` 插件
|
||||
在插件列表中,选择 Go,进行安装,安装之后,系统会提示重启 Visual Studio Code。
|
||||
|
||||
写一个 Hello World ,然后运行:
|
||||
|
||||
hello.go
|
||||
```Go
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Printf("Hello word")
|
||||
}
|
||||
```
|
||||
|
||||
保存的时候, vscode 右下角会提示,需要安装依赖包, 点击 Install All ( 建议提前设好代理, 参考 Go Module 章节 )
|
||||
另外建议使用 golint 或者 golangci-lint 等工具, 可以写出更优雅的代码; 也可以把自动保存功能开启, 开启方法为:选择菜单 File,点击 Auto save。
|
||||
|
||||
VSCode 代码设置可用于 Go 扩展。这些都可以在用户的喜好来设置或工作区设置(.vscode/settings.json)。
|
||||
|
||||
VSCode 还有一些高级配置, 打开首选项-用户设置, 一般可以通过图形界面设置
|
||||
也可以通过 settings.json 进行更多高级配置:
|
||||
|
||||
```Go
|
||||
"go.buildOnSave": "package", // 'workspace', 'package', or 'off'.
|
||||
"go.lintOnSave": "workspace", // 'workspace', 'package', or 'off'.
|
||||
"go.vetOnSave": "workspace", // 'workspace', 'package', or 'off'.
|
||||
"go.buildFlags": [],
|
||||
"go.lintFlags": [],
|
||||
"go.vetFlags": [],
|
||||
"go.coverOnSave": false,
|
||||
"go.useCodeSnippetsOnFunctionSuggest": false,
|
||||
"go.formatOnSave": true,
|
||||
//
|
||||
"go.formatTool": "goimports", // goreturns
|
||||
"go.lintTool": "golangci-lint",
|
||||
"go.useLanguageServer": true,
|
||||
//
|
||||
"go.goroot": "", // 你的 Goroot, 可选配置
|
||||
"go.gopath": "", // 你的 Gopath, go1.12 之后改用 go-mod, 可选配置
|
||||
```
|
||||
|
||||
vscode 还有一项很强大的功能就是断点调试,结合 [delve](https://github.com/derekparker/delve) 可以很好的进行 Go 代码调试
|
||||
|
||||
```Go
|
||||
|
||||
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
|
||||
|
||||
brew install go-delve/delve/delve (mac可选)
|
||||
|
||||
```
|
||||
|
||||
如果有问题再来一遍:
|
||||
```Go
|
||||
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
|
||||
```
|
||||
|
||||
注意:修改"dlv-cert"证书, 选择"显示简介"->"信任"->"代码签名" 修改为: 始终信任
|
||||
|
||||
打开首选项-工作区设置,配置launch.json:
|
||||
|
||||
```Go
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## GoLand
|
||||
|
||||
GoLand 是 JetBrains 公司推出的 Go 语言集成开发环境,是 Idea Go 插件的强化版。GoLand 同样基于 IntelliJ 平台开发,支持 JetBrains 的插件体系。
|
||||
经过几年不断迭代更新, GoLand 目前已经是 Go 开发工具中最成熟的 IDE 之一, 而且配置相当简单.
|
||||
|
||||
下载地址: https://www.jetbrains.com/go/
|
||||
|
||||
|
||||
## Sublime Text
|
||||
|
||||
这里将介绍Sublime Text 3(以下简称Sublime)+ GoSublime + gocode的组合,那么为什么选择这个组合呢?
|
||||
|
||||
- 自动化提示代码,如下图所示
|
||||
|
||||

|
||||
|
||||
图1.5 sublime自动化提示界面
|
||||
|
||||
- 保存的时候自动格式化代码,让您编写的代码更加美观,符合Go的标准。
|
||||
- 支持项目管理
|
||||
|
||||

|
||||
|
||||
图1.6 sublime项目管理界面
|
||||
|
||||
- 支持语法高亮
|
||||
- Sublime Text 3可免费使用,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别。
|
||||
|
||||
|
||||
接下来就开始讲如何安装,下载 [Sublime](http://www.sublimetext.com/)
|
||||
|
||||
根据自己相应的系统下载相应的版本,然后打开Sublime,对于不熟悉Sublime的同学可以先看一下这篇文章[Sublime Text 全程指南](http://blog.jobbole.com/88648/)或者[sublime text3入门教程](http://blog.csdn.net/sam976/article/details/52076271)
|
||||
|
||||
1. 打开之后安装 Package Control:Ctrl+` 打开命令行,执行如下代码:
|
||||
|
||||
适用于 Sublime Text 3:
|
||||
|
||||
```Go
|
||||
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:
|
||||
|
||||
```Go
|
||||
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包管理
|
||||
|
||||
|
||||
2. 安装完之后就可以安装Sublime的插件了。需安装GoSublime、SidebarEnhancements和Go Build,安装插件之后记得重启Sublime生效,Ctrl+Shift+p打开Package Controll 输入`pcip`(即“Package Control: Install Package”的缩写)。
|
||||
|
||||
这个时候看左下角显示正在读取包数据,完成之后出现如下界面
|
||||
|
||||

|
||||
|
||||
图1.8 sublime安装插件界面
|
||||
|
||||
这个时候输入GoSublime,按确定就开始安装了。同理应用于SidebarEnhancements和Go Build。
|
||||
|
||||
3. 安装 [gocode](https://github.com/nsf/gocode/)
|
||||
|
||||
go get -u github.com/nsf/gocode
|
||||
|
||||
gocode 将会安装在默认`$GOBIN`
|
||||
|
||||
另外建议安装gotests(生成测试代码):
|
||||
|
||||
|
||||
先在sublime安装gotests插件,再运行:
|
||||
|
||||
|
||||
```Go
|
||||
go get -u -v github.com/cweill/gotests/...
|
||||
```
|
||||
|
||||
3. 验证是否安装成功,你可以打开Sublime,打开main.go,看看语法是不是高亮了,输入`import`是不是自动化提示了,`import "fmt"`之后,输入`fmt.`是不是自动化提示有函数了。
|
||||
|
||||
如果已经出现这个提示,那说明你已经安装完成了,并且完成了自动提示。
|
||||
|
||||
如果没有出现这样的提示,一般就是你的`$PATH`没有配置正确。你可以打开终端,输入gocode,是不是能够正确运行,如果不行就说明`$PATH`没有配置正确。
|
||||
(针对XP)有时候在终端能运行成功,但sublime无提示或者编译解码错误,请安装sublime text3和convert utf8插件试一试
|
||||
|
||||
4. 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
|
||||
|
||||
|
||||
## LiteIDE
|
||||
|
||||
@@ -91,197 +284,18 @@
|
||||
在LiteIDE中可以方便的查看和设置GOPATH。通过`菜单-查看-GOPATH`设置,可以查看系统中已存在的GOPATH列表,
|
||||
同时可根据需要添加项目目录到自定义GOPATH列表中。
|
||||
|
||||
## Sublime Text
|
||||
|
||||
这里将介绍Sublime Text 3(以下简称Sublime)+ GoSublime + gocode的组合,那么为什么选择这个组合呢?
|
||||
|
||||
- 自动化提示代码,如下图所示
|
||||
|
||||

|
||||
|
||||
图1.5 sublime自动化提示界面
|
||||
|
||||
- 保存的时候自动格式化代码,让您编写的代码更加美观,符合Go的标准。
|
||||
- 支持项目管理
|
||||
|
||||

|
||||
|
||||
图1.6 sublime项目管理界面
|
||||
|
||||
- 支持语法高亮
|
||||
- Sublime Text 3可免费使用,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别。
|
||||
|
||||
|
||||
接下来就开始讲如何安装,下载 [Sublime](http://www.sublimetext.com/)
|
||||
|
||||
根据自己相应的系统下载相应的版本,然后打开Sublime,对于不熟悉Sublime的同学可以先看一下这篇文章[Sublime Text 全程指南](http://blog.jobbole.com/88648/)或者[sublime text3入门教程](http://blog.csdn.net/sam976/article/details/52076271)
|
||||
|
||||
1. 打开之后安装 Package Control:Ctrl+` 打开命令行,执行如下代码:
|
||||
|
||||
适用于 Sublime Text 3:
|
||||
|
||||
```Go
|
||||
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:
|
||||
|
||||
```Go
|
||||
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包管理
|
||||
|
||||
|
||||
2. 安装完之后就可以安装Sublime的插件了。需安装GoSublime、SidebarEnhancements和Go Build,安装插件之后记得重启Sublime生效,Ctrl+Shift+p打开Package Controll 输入`pcip`(即“Package Control: Install Package”的缩写)。
|
||||
|
||||
这个时候看左下角显示正在读取包数据,完成之后出现如下界面
|
||||
|
||||

|
||||
|
||||
图1.8 sublime安装插件界面
|
||||
|
||||
这个时候输入GoSublime,按确定就开始安装了。同理应用于SidebarEnhancements和Go Build。
|
||||
|
||||
3. 安装 [gocode](https://github.com/nsf/gocode/)
|
||||
|
||||
go get -u github.com/nsf/gocode
|
||||
|
||||
gocode 将会安装在默认`$GOBIN`
|
||||
|
||||
另外建议安装gotests(生成测试代码):
|
||||
|
||||
|
||||
先在sublime安装gotests插件,再运行:
|
||||
|
||||
|
||||
```Go
|
||||
go get -u -v github.com/cweill/gotests/...
|
||||
```
|
||||
|
||||
3. 验证是否安装成功,你可以打开Sublime,打开main.go,看看语法是不是高亮了,输入`import`是不是自动化提示了,`import "fmt"`之后,输入`fmt.`是不是自动化提示有函数了。
|
||||
|
||||
如果已经出现这个提示,那说明你已经安装完成了,并且完成了自动提示。
|
||||
|
||||
如果没有出现这样的提示,一般就是你的`$PATH`没有配置正确。你可以打开终端,输入gocode,是不是能够正确运行,如果不行就说明`$PATH`没有配置正确。
|
||||
(针对XP)有时候在终端能运行成功,但sublime无提示或者编译解码错误,请安装sublime text3和convert utf8插件试一试
|
||||
|
||||
4. 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技术构建的开源编辑器, 是一款很强大的编辑器。开源地址:https://github.com/Microsoft/vscode
|
||||
|
||||
1、安装Visual Studio Code 最新版
|
||||
|
||||
官方网站:https://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
|
||||
|
||||
{
|
||||
"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](https://github.com/golang) 下载再移动到相关目录):
|
||||
```Go
|
||||
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](https://github.com/derekparker/delve) 可以很好的进行 Go 代码调试
|
||||
|
||||
```Go
|
||||
|
||||
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
|
||||
|
||||
brew install go-delve/delve/delve(mac可选)
|
||||
|
||||
```
|
||||
如果有问题再来一遍:
|
||||
```Go
|
||||
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
|
||||
```
|
||||
注意:修改"dlv-cert"证书, 选择"显示简介"->"信任"->"代码签名" 修改为: 始终信任
|
||||
|
||||
打开首选项-工作区设置,配置launch.json:
|
||||
|
||||
```Go
|
||||
{
|
||||
"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 是 GitHub 基于 Electron 和 Web 技术构建的开源编辑器, 是一款很漂亮强大的编辑器, 缺点是速度比较慢。
|
||||
|
||||
首先要先安装下Atom,下载地址: https://atom.io/
|
||||
首先要先安装下 Atom,下载地址: https://atom.io/
|
||||
|
||||
然后安装go-plus插件:
|
||||
然后安装 go-plus 插件:
|
||||
|
||||
go-plus是Atom上面的一款开源的go语言开发环境的的插件
|
||||
go-plus 是 Atom 上面的一款开源的 go 语言开发环境的的插件
|
||||
|
||||
它需要依赖下面的go语言工具:
|
||||
它需要依赖下面的go语言工具:
|
||||
```Go
|
||||
1.autocomplete-go :gocode的代码自动提示
|
||||
2.gofmt :使用goftm,goimports,goturns
|
||||
@@ -297,13 +311,8 @@ Atom是GitHub基于Electron和web技术构建的开源编辑器, 是一款很漂
|
||||
就会开始安装 go-plus , go-plus 插件会自动安装对应的依赖插件,如果没有安装对应的go的类库会自动运行: go get 安装。
|
||||
|
||||
|
||||
## GoLand
|
||||
|
||||
GoLand 是 JetBrains 公司推出的 Go 语言集成开发环境,是 Idea Go 插件的强化版。GoLand 同样基于 IntelliJ 平台开发,支持 JetBrains 的插件体系。
|
||||
|
||||
下载地址: https://www.jetbrains.com/go/
|
||||
|
||||
## Vim
|
||||
|
||||
Vim是从vi发展出来的一个文本编辑器, 代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
|
||||
|
||||
vim-go是vim上面的一款开源的go语言使用最为广泛开发环境的的插件
|
||||
@@ -315,7 +324,7 @@ vim的插件管理主要有[Pathogen](https://github.com/tpope/vim-pathogen)与[
|
||||
pathogen是为了解决每一个插件安装后文件分散到多个目录不好管理而存在的。vundle是为了解决自动搜索及下载插件而存在的。
|
||||
这两个插件可同时使用。
|
||||
|
||||
1.安装Vundle
|
||||
1.安装 Vundle
|
||||
|
||||
```sh
|
||||
mkdir ~/.vim/bundle
|
||||
@@ -405,6 +414,7 @@ Plugin 'Valloric/YouCompleteMe'
|
||||
更多VIM 设定, 可参考[链接](http://www.cnblogs.com/witcxc/archive/2011/12/28/2304704.html)
|
||||
|
||||
## Emacs
|
||||
|
||||
Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。
|
||||
|
||||

|
||||
@@ -542,6 +552,7 @@ Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环
|
||||
6. 恭喜你,你现在可以体验在神器中开发Go的乐趣。默认speedbar是关闭的,如果打开需要把 ;; (speedbar 1) 前面的注释去掉,或者也可以通过 *M-x speedbar* 手动开启。
|
||||
|
||||
## Eclipse
|
||||
|
||||
Eclipse也是非常常用的开发利器,以下介绍如何使用Eclipse来编写Go程序。
|
||||
|
||||

|
||||
@@ -608,6 +619,7 @@ Eclipse也是非常常用的开发利器,以下介绍如何使用Eclipse来编
|
||||
图1.16 调试Go程序
|
||||
|
||||
## IntelliJ IDEA
|
||||
|
||||
熟悉Java的读者应该对于idea不陌生,idea是通过一个插件来支持go语言的高亮语法,代码提示和重构实现。
|
||||
|
||||
1. 先下载idea,idea支持多平台:win,mac,linux,如果有钱就买个正式版,如果不行就使用社区免费版,对于只是开发Go语言来说免费版足够用了
|
||||
|
||||
Reference in New Issue
Block a user