Mint19.1配置VSCode的Go环境

1. 下载软件包

到 Go 语言官网地址下载 tar.gz 软件包,本人下载的软件包版本是 go1.14.2.linux-amd64.tar.gz

2. 解压软件包

将软件包解压到合适位置,本人解压到路径 /usr/local 目录下:

1
sudo tar -C /usr/local -xzf go1.14.2.linux-amd64.tar.gz

3. 添加环境变量

3.1 导入软件包路径

若配置该 Go 开发环境是针对整个系统的,则修改 /etc/profile 文件,在文件尾部添加以下代码,使之前下载的软件包解压路径添加到环境变量 $PATH 中;若配置该 Go 开发环境是针对当前用户的,则修改 $HOME/.bashrc 文件,在文件尾部添加以下代码,使之前下载的软件包解压路径添加到环境变量 $PATH 中;此外还需追加个人项目路径到环境变量 $GOPATH 中(用于后续进行 go 语言开发)。

1
2
export PATH=/usr/local/go/bin:$PATH			# 该路径用于指明 go 编译器程序位置
export GOPATH=$HOME/go:$GOPATH # 该路径用于指明个人项目工作区位置(具体项目路径可自行配置)

3.2 刷新环境变量

  • 若修改的是 /etc/profile 文件,则使用 source 命令刷新该文件:
1
source /etc/profile
  • 若修改的是 $HOME/.bashrc 文件,则使用 source 命令刷新该文件:
1
source $HOME/.bashrc

或者直接重启系统即可。

4. 配置 VSCode 环境

如果没有安装 VSCode 编辑器,则自行到官网地址下载 deb 包安装即可。如果安装了 VSCode 编辑器,可能需要重新启动下以适应上文刷新了 $PATH 环境变量。

4.1 安装语言插件

到 VSCode 扩展商店中安装第三方 Go 语言插件即可。

4.2 安装开发工具包

  • 按下快捷键 Ctrl+Shift+P,输入并选中 Go:Install/Update Tools,然后勾选弹出来的所有 Go 语言开发工具包,点击确认直接安装(【注】此方式需要科学上网)
  • 如果无法科学上网,则可以按照如下两种方法配置 Go 模块代理(详细内容参见 Goproxy China 官方说明)然后再重复上一步在 VSCode 安装所有 Go 语言开发工具包即可:
  1. 方法一:在终端下执行以下代码:
1
go env -w GOPROXY=https://goproxy.cn,direct
  1. 方法二:修改 /etc/profile/$HOME/.bashrc 文件,追加以下代码并 source 刷新对应配置文件(同步骤 3):
1
export GOPROXY=https://goproxy.cn

4.3 测试环境

在 VSCode 下新建一个 hello.go 文件,输入以下代码并运行,正确输出结果则表明基于 VSCode 的 Go 语言环境基本配置成功:

1
2
3
4
5
6
7
package main

import "fmt"

func main() {
fmt.Printf("hello, world\n")
}

4.4 构建项目

在上述安装开发工具包之后,$GOPATH 目录会自动生成(如果原来不存在的话),而且目录下会有 srcpkg 两个子文件夹,前者用来保存项目的源代码,后者用来缓存项目的依赖文件,除了以上两个子文件夹外,我们还需要一个 bin 文件夹用来保存项目编译成功后生成的可执行文件,若没有以上三个子文件夹的任何一个可以自行创建。以下通过创建 calc 项目案例来看看 go 语言开发项目是如何在 VSCode 下创建的,该项目最终结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.
├── bin
│   └── calc
├── pkg
└── src
├── calc
│   └── calc.go
└── simplemath
├── add.go
├── add_test.go
├── sqrt.go
└── sqrt_test.go

5 directories, 6 files
  • src 子文件夹下创建 calc 文件夹作为项目主文件所在目录,在 calc 目录下创建主文件 calc.go ,文件内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//calc.go
package main

import (
"fmt"
"os"
"strconv"

"simplemath"
) // 用于获得命令行参数os.Args
var Usage = func() {
fmt.Println("USAGE: calc command [arguments] ...")
fmt.Println("\nThe commands are:\n\tadd\tAddition of two values\n\tsqrt\tSquareroot of a non-negative value.")
}

func main() {
args := os.Args
if args == nil || len(args) < 3 {
Usage()
return
}
switch args[1] {
case "add":
if len(args) != 4 {
fmt.Println("USAGE: calc add <integer1><integer2>")
return
}
v1, err1 := strconv.Atoi(args[2])
v2, err2 := strconv.Atoi(args[3])
if err1 != nil || err2 != nil {
fmt.Println("USAGE: calc add <integer1><integer2>")
return
}
ret := simplemath.Add(v1, v2)
fmt.Println("Result: ", ret)
case "sqrt":
if len(args) != 3 {
fmt.Println("USAGE: calc sqrt <integer>")
return
}
v, err := strconv.Atoi(args[2])
if err != nil {
fmt.Println("USAGE: calc sqrt <integer>")
return
}
ret := simplemath.Sqrt(v)
fmt.Println("Result: ", ret)
default:
// fmt.Println("HERE")
// fmt.Println(len(args))
// fmt.Println(args)
Usage()
}
}
  • src 子文件夹中创建项目依赖文件目录 simplemath,在该目录下一次创建 add.goadd_test.gosqrt.gosqrt_test.go 文件,其内容分别如下:
1
2
3
4
5
6
// add.go
package simplemath

func Add(a int, b int) int {
return a + b
}
1
2
3
4
5
6
7
8
9
// add_test.go
package simplemath
import "testing"
func TestAdd1(t *testing.T) {
r := Add(1, 2)
if r != 3 {
t.Errorf("Add(1, 2) failed. Got %d, expected 3.", r)
}
}
1
2
3
4
5
6
7
8
// sqrt.go
package simplemath
import "math"

func Sqrt(i int) int {
v := math.Sqrt(float64(i))
return int(v)
}
1
2
3
4
5
6
7
8
9
10
// sqrt_test.go
package simplemath
import "testing"

func TestSqrt1(t *testing.T) {
v := Sqrt(16)
if v != 4 {
t.Errorf("Sqrt(16) failed. Got %v, expected 4.", v)
}
}
  • 然后在 VSCode 下直接点击运行,若显示可执行程序 calc 的 Usage 信息说明项目编译运行成功
  • 接着切换到 bin 子文件夹下,通过以下代码构建项目可执行程序 calc
1
go build calc
  • 如果成功 bin 子文件夹下成功生成 calc 可执行文件,说明项目构建成功,可直接在终端运行该可执行文件
  • 此外,也可以在终端运行项目中的 test 文件来测试项目依赖文件中的主要函数是否正确:
1
go test simplemath