Golang的IDE搭建各种方式的比较与踩坑备忘

Go 语言支持以下系统:

  • Linux
  • FreeBSD
  • Mac OS X(也称为 Darwin)
  • Windows

安装包下载地址为:https://golang.org/dl/。

如果打不开可以使用这个地址:https://golang.google.cn/dl/。

. . .

Windows 系统下安装Go

Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。

默认情况下 .msi 文件会安装在 c:\Go 目录下。你可以将 c:\Go\bin 目录添加到 Path 环境变量中(默认msi会帮你加入到PATH中)。添加后你需要重启命令窗口才能生效。

Go项目注意事项

当你遇到了一些奇怪的环境配置问题可以尝试下面的建议, 否则建议走 GoLand流)

  • go项目最好放到GOPATH的src文件夹下, 可以免除很多奇奇怪怪的麻烦
  • 如果是Win平台, 尽量用PowerShell编译, 可以免除很多奇奇怪怪的麻烦, 不建议用GoLand的terminal, 谁也不知道他干了啥,
  • 如果目录下有 go.mod 文件, go build 的时候默认是会从网上下载最新依赖库的, 所以如果想直接用vendor文件夹里的本地的依赖库编译可执行文件可以用命令 go build -mod=vendor,
  • 如果目录下没有 go.mod 文件, 则直接 go build即可, 他会优先以vendor里的依赖库编译的

GoLand流(推荐)

激活方法: Pycharm & Goland 激活

GoLand几乎不需要什么特别的配置, 不过有几点要注意:

  • 如果当前项目没有放在GOPATH的src下, 则必须放在其他某个文件夹(比如是example_folder)的src文件夹下, 然后在goland的 settings-GOPATH-Project GOPATH 下加上 example_folder的路径, 并且编译时候使用goland的terminal来编译
  • 如果本身项目中的vendor或其他本地文件夹已经包含所有第三方抵赖了, 记得把Goland的 settings-Go-Go Modules(vgo)的enable的 √ 去掉, 不然goland不会直接引用本地的这些依赖, 不仅go build会出错, 而且goland还不能正确的函数跳转, 而且goland还有可能会疯狂提示要你登录相应的git仓库的账号密码啥的
  • 当出现了一些奇怪的无法编译或无法跳转问题, 则可参考 Go项目注意事项

VSCode流

在 vscode 扩展里面搜索 go(MicroSoft出品的那个),然后下载安装扩展。

安装 go 插件

  1. $GOPATH目录下创建bin,pkg,src
  2. 切换到$GOPATH/bin目录下,打开终端输入以下命令,不需要翻墙:

    • go get -u -v github.com/josharian/impl
    • go get -u -v github.com/mdempsky/gocode
    • go get -u -v github.com/rogpeppe/godef
    • go get -u -v github.com/golang/lint/golint
    • go get -u -v github.com/lukehoban/go-find-references
    • go get -u -v github.com/lukehoban/go-outline
    • go get -u -v github.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 -v -u github.com/peterh/liner
    • github.com/derekparker/delve/cmd/dlv
    • go get -u -v golang.org/x/tools/cmd/guru
      一共 11 个插件,由于被墙和依赖的缘故,很多插件是没办法正常安装的,但是 go 官方在 github 是有镜像仓库的,所以我们可以借助 github 来安装。
  3. src下创建golang.org/x/两个文件夹,然后切换到此目录下,打开终端输入:

    1
    git clone https://github.com/golang/tools.git

    此时x目录下会出现tools文件夹。

  4. 切换到$GOPATH目录下,打开终端输入以下命令安装,安装那些你上一步没有成功的插件:

    • go install github.com/mdempsky/gocode
    • go install github.com/rogpeppe/godef
    • go install github.com/lukehoban/go-find-references
    • go install github.com/lukehoban/go-outline
    • go install github.com/sqs/goreturns
    • go install golang.org/x/tools/cmd/gorename
    • go install github.com/tpng/gopkgs
    • go install github.com/josharian/impl
    • go install github.com/newhook/go-symbols
    • go install golang.org/x/tools/cmd/guru
    • golint比较特殊,通过上面的方式还是无法安装,所以我们在x目录下打开终端执行:

      1
      2
      git clone https://github.com/golang/lint.git
      go install golang.org/x/lint/golint

此时所有插件安装成功。

第三方库依赖(可选项)

  1. 安装net库解决警告,切换到x目录,然后打开终端执行:

    1
    git clone git@github.com:golang/net.git --depth 1

    然后重启 vscode 即可。

  2. 安装text库解决警告,切换到x目录,然后打开终端执行:

    1
    git clone git@github.com:golang/text.git --depth 1

    然后重启 vscode 即可

调试配置

备注:go 的调试器是dlv

  1. 进入调试界面,按F5或者点击调试按钮,进入后添加配置(项目需要以文件夹的形式打开)。
  2. 回到hello.go文件, 按F5, 出现以下界面代表成功:

用户设置

如果设置了系统级别的$GOPATH可以在用户设置里面覆盖。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
"go.buildTags": "",
"go.buildFlags": [],
"go.lintFlags": [],
"go.vetFlags": [],
"go.liveErrors": {
"enabled": true,
"delay": 500
},
"go.coverOnSave": false,
"go.useCodeSnippetsOnFunctionSuggest": true,
"go.useCodeSnippetsOnFunctionSuggestWithoutType": true,
"go.formatTool": "goreturns",
"go.goroot": "C:\\Go",
"go.gopath": "C:\\Users\\b\\go",
"go.gocodeAutoBuild": false,
"go.autocompleteUnimportedPackages": true