2019-10-16

本文默认已经安装好Go语言开发包以及VScode软件

# 1 - 系统环境

系统/用户环境变量

  • GOROOT Go 源码存放目录,如果是msi 安装包则默认为 c:/go。
  • GOPATH Go 项目/工程的工作区,它包含 3 个主要目录(目录名均为小写)
    • bin 编译/构建后,可执行文件目录。(Executable File)
    • pkg 归档文件目录。(Archive File)
    • src 项目/工程的源码文件目录。(Source File)
  • GOCACHE Go 命令将在其中存储缓存信息以供将来生成时重复使用的目录。
  • GOTMPDIR Go 命令将在其中写入临时源文件、软件包和二进制文件的目录。
    这里就不重复说明如何配置 Go 开发环境了。

2 - GoProxy 配置

由于国内网络环境限制,建议先配置GoProxy环境变量,当然不配置也行,你能正常访问 golang.org/ 网址也行。\

推荐使用go mod管理项目
在安装好Go运行环境后,Windows系统可以打开cmd或者powershell (macOSLinux系统打开终端),分别输入以下命令

# 启用 go mod
go env -w GO111MODULE=on
# 设置 Go Proxy 代理
go env -w GOPROXY=https://goproxy.io,direct
image.png
image.png

3 - VScode 安装 Go 插件

image.png

我的已经安装过了,安装时正常点击右侧的安装按钮即可

4 - VSCode 安装 Go 工具包

Go 工具包包含了一些格式化、代码检查等功能

  1. Ctrl+Shift+P (Windows环境),或者选择 "查看" -> "命令面板"
    image.png
  2. 我们在这个输入框中输入>go:install,下面会自动搜索相关命令,我们选择Go:Install/Update Tools这个命令
    image.png
  3. 选中并会回车执行该命令(或者使用鼠标点击该命令)
image.png
image.png
image.png

VS Code此时会下载并安装上图列出来的16个工具,但是由于国内的网络环境基本上都会出现安装失败,如出现各种FAILED

有两种方法解决这个问题:

5.1 方法一:使用git下载源代码再安装

我们可以手动从github上下载工具,(执行此步骤前提需要你的电脑上已经安装了git)

第一步:现在自己的GOPATHsrc目录下创建golang.org/x目录
第二步:在终端/cmdcdGOPATH/src/golang.org/x目录下
第三步:执行git clone https://github.com/golang/tools.git tools命令
第四步:执行git clone https://github.com/golang/lint.git命令
第五步:按下Ctrl/Command+Shift+P再次执行Go:Install/Update Tools命令,在弹出的窗口全选并点击确定,这一次的安装都会SUCCESSED了。\

git clone https://github.com/golang/tools.git tools
go install github.com/ramya-rao-a/go-outline
go install github.com/cweill/gotests/gotests
go install github.com/josharian/impl
go install github.com/acroca/go-symbols
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install github.com/rogpeppe/godef
go install github.com/sqs/goreturns
go install github.com/golang/lint/golint

经过上面的步骤就可以安装成功了。

5.2安装失败解决办法 使用go mod 代理安装

# Go 1.13 及以上(推荐)

# Windows执行
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

# Windows PowerShell 执行 
$env:GO111MODULE = "on"
$env:GOPROXY = "https://goproxy.cn"

# macOS 或 Linux 执行
export GO111MODULE=on
export GOPROXY=https://goproxy.cn

# 或者  macOS 或 Linux 执行
echo "export GO111MODULE=on" >> ~/.profile
echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
source ~/.profile

手动安装

golang.org/x/

  • 首先进入GOPATH目录, 如果不知道在哪, 使用 go env 可以查看
  • 然后进入到 src/golang.org/x/ 目录, 如果没有可自行创建 mkdir -p src/golang.org/x
    分别将支持包 clone 下来。
git clone https://github.com/golang/tools.git (工具集以及包源代码)
git clone https://github.com/golang/lint.git (lint 大家都不陌生了)
git clone https://github.com/golang/mod.git (mod 模块支持)
git clone https://github.com/golang/xerrors.git (错误值转换包)
git clone https://github.com/golang/net.git

之后进入到 GOPATH根目录; 使用 go get -u -v 命令将以上失败中的 github.com 相关的命令执行一遍

go get -u -v github.com/mdempsky/gocode
go get -u -v github.com/uudashr/gopkgs/v2/cmd/gopkgs
go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/acroca/go-symbols
go get -u -v github.com/cweill/gotests/...
go get -u -v github.com/fatih/gomodifytags
go get -u -v github.com/josharian/impl
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/haya14busa/goplay/cmd/goplay
go get -u -v github.com/godoctor/godoctor
go get -u -v github.com/go-delve/delve/cmd/dlv
go get -u -v github.com/stamblerre/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/sqs/goreturns

无法正常使用 go get 安装时使用 clone 并通过 go install 方式安装,注意要在 %GOPATH% 下使用命令。

go get -u -v github.com/sqs/goreturns (无法正常安装时使用以下命令)
git clone https://github.com/sqs/goreturns.git
go install github.com/sqs/goreturns.git
go get -u -v github.com/josharian/impl (无法正常安装时使用以下命令)
git clone https://github.com/josharian/impl.git 
go install github.com/josharian/impl (该支持模块只支持 x64 版本,千万注意系统版本和 Golang 版本)
go get -u -v github.com/go-delve/delve/cmd/dlv (无法正常安装时使用以下命令)
git clone https://github.com/go-delve/delve.git (go-delve 目录需要手动创建,然后将 delve 放进去)
go install github.com/go-delve/delve/cmd/dlv

gocode使用说明

go 语法与自动补全,gocode-gomod 需要使用 VS Code 提示安装完成。
https://github.com/stamblerre/gocode.git (支持模块,目前该模块有问题,不建议使用)
go get -u -v github.com/stamblerre/gocode
https://github.com/mdempsky/gocode.git (Go > 1.8 不支持模块)
go get -u -v github.com/mdempsky/gocode
https://github.com/nsf/gocode.git (旧版本,且不再维护)
go get -u -v github.com/nsf/gocode

其他包 (install || import)

需要 install 或者 import 来进行使用,但更推荐使用 install 方式。安装方式同上。

git clone https://github.com/golang/net.git (网络包)
git clone https://github.com/golang/sync.git (同步/原子包)
git clone https://github.com/golang/crypto.git (加密包)
git clone https://github.com/golang/debug.git (debug 工具包)
git clone https://github.com/golang/oauth2.git (oauth2 认证包)
git clone https://github.com/golang/protobuf.git (protobuf 协议包)

以上为额外的且常用的一些功能的源码扩展包,如有需要可以考虑使用,当然也可以使用第三方包实现。

F5 调试运行

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "GoLaunch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "remotePath": "",
            "port": 6666,
            "host": "127.0.0.1",
            "program": "${fileDirname}//main.go", // 将 main.go 换成你的文件名
            "env": {
                "GOPATH": "D:/Go/workplace/",    // 你的GOPATH
                "GOROOT": "D:/Go/"           // GOROOT,GO的安装目录
            },
            "args": [],
            //"showLog": true
        }
    ]
}

第一个GO程序

在D:/Go/workplace/的src目录下,创建test子目录
2、在vs code中打开test子目录
3、在vs code中新建一个文件,保存为test.go
4、在cmd状态下,在test子目录,输入go run test.go同样,能看到程序运行结果\

package main

import "fmt"
func main() {
    fmt.Println("Hello World!")
}

补充内容

  1. guru 和 gogetdoc 都是代码描述提示,建议使用 gogetdoc
  2. godoctor 可以使用是 golint
  3. goimports 和 goreturns 是格式化和包引用管理,建议使用 goreturns

至此 VSCode 配置Go语言开发环境,搭建完成!
接下来就可以使用 VSCode 愉快的编写 Go 代码了!

参考:
配置Visual Studio Code Go 开发 | Microsoft Docs

你可能感兴趣的:(2019-10-16)