到 Go 语言官网地址下载 tar.gz 软件包,本人下载的软件包版本是 go1.14.2.linux-amd64.tar.gz
。
将软件包解压到合适位置,本人解压到路径 /usr/local
目录下:
sudo tar -C /usr/local -xzf go1.14.2.linux-amd64.tar.gz
若配置该 Go 开发环境是针对整个系统的,则修改 /etc/profile 文件,在文件尾部添加以下代码,使之前下载的软件包解压路径添加到环境变量 PATH 中;若配置该 Go 开发环境是针对当前用户的,则修改 HOME/.bashrc 文件,在文件尾部添加以下代码,使之前下载的软件包解压路径添加到环境变量 PATH 中;此外还需追加个人项目路径到环境变量 GOPATH 中(用于后续进行 go 语言开发)。
export PATH=/usr/local/go/bin:$PATH # 该路径用于指明 go 编译器程序位置
export GOPATH=$HOME/go:$GOPATH # 该路径用于指明个人项目工作区位置(具体项目路径可自行配置)
/etc/profile
文件,则使用 source 命令刷新该文件:source /etc/profile
$HOME/.bashrc
文件,则使用 source 命令刷新该文件:source $HOME/.bashrc
或者直接重启系统即可。
如果没有安装 VSCode 编辑器,则自行到官网地址下载 deb 包安装即可。如果安装了 VSCode 编辑器,可能需要重新启动下以适应上文刷新了 $PATH
环境变量。
到 VSCode 扩展商店中安装第三方 Go
语言插件即可。
Ctrl+Shift+P
,输入并选中 Go:Install/Update Tools
,然后勾选弹出来的所有 Go 语言开发工具包,点击确认直接安装(【注】此方式需要访问国外网站) go env -w GOPROXY=https://goproxy.cn,direct
2.方法二:修改 /etc/profile
或 /$HOME/.bashrc
文件,追加以下代码并 source
刷新对应配置文件(同步骤 3):
export GOPROXY=https://goproxy.cn
在 VSCode 下新建一个 hello.go
文件,输入以下代码并运行,正确输出结果则表明基于 VSCode 的 Go 语言环境基本配置成功:
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
在上述安装开发工具包之后,$GOPATH
目录会自动生成(如果原来不存在的话),而且目录下会有 src
和 pkg
两个子文件夹,前者用来保存项目的源代码,后者用来缓存项目的依赖文件,除了以上两个子文件夹外,我们还需要一个 bin
文件夹用来保存项目编译成功后生成的可执行文件,若没有以上三个子文件夹的任何一个可以自行创建。以下通过创建 calc 项目案例来看看 go 语言开发项目是如何在 VSCode 下创建的,该项目最终结构如下:
.
├── 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
,文件内容如下://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.go
、add_test.go
、sqrt.go
、sqrt_test.go
文件,其内容分别如下:// add.go
package simplemath
func Add(a int, b int) int {
return a + b
}
// 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)
}
}
// sqrt.go
package simplemath
import "math"
func Sqrt(i int) int {
v := math.Sqrt(float64(i))
return int(v)
}
// 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)
}
}
bin
子文件夹下,通过以下代码构建项目可执行程序 calc:go build calc
bin
子文件夹下成功生成 calc 可执行文件,说明项目构建成功,可直接在终端运行该可执行文件go test simplemath