实验:安装 Golang 开发环境
【实验环境】
Ubuntu 18.04.4
【实验内容】
【实验过程】
-
实验环境搭建
本实验在 VirtualBox 中创建操作系统为 Ubuntu 18.04.4 的虚拟机作为后续实验的环境。其中,镜像下载可转至清华大学开源软件镜像站。 -
安装 VSCode
参见在linux系统中安装VSCode(Visual Studio Code)。 -
安装 golang
访问 Go官方镜像站下载 Linux 版本的golang。
# 这一步需要切换为超级用户进行
# tar xzvf 下载路径/go1.15.1.linux-amd64.tar.gz -C 指定解压路径
sudo tar xzvf /home/sherry/Downloads/go1.15.1.linux-amd64.tar.gz -C /usr/local
- 创建工作空间:
mkdir $HOME/gowork
- 打开 $HOME/.profile 文件,在结尾添加以下两行:
export GOPATH=$HOME/gowork
export PATH=$PATH:$GOPATH/bin
- 使环境变量设置生效:
source $HOME/.profile
- 在命令行窗口输入 “go env” 检查配置:
- 编写第一个 go 程序
- 创建源代码目录
# mkdir $GOPATH/src/github.com/user_name/hello -p
mkdir $GOPATH/src/github.com/sherryjw/hello -p
- 创建并编写hello.go:
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
- 运行:
- 安装必要的工具和插件
- 安装 Git 客户端
sudo apt-get install git
-
检查 git 安装情况,可通过查看 git 版本:
-
安装 go 的相关工具
由于无法直接访问 golang.org,因此需要通过使用 github 上的镜像来安装,步骤如下:
①. 下载源代码到本地:
注:该步骤若按照课程主页进行可能出错。
mkdir $GOPATH/src/golang.org/x -p
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/tools.git
②. 安装工具包:
go install $GOPATH/src/golang.org/x/tools/go/buildutil
③. 退出 VSCode 再进入,按提示安装;在 VSCode 中运行 hello.go:
④. 查看 go 当前工作空间的目录结构,应该和官方文档如何使用Go编程的工作空间一致:
⑤. 安装运行 hello world:
go install github.com/github-user/hello
hello
- 安装与运行 go tour
注:该步骤若按照课程主页进行可能出错。
设置代理:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
获取 https://tour.golang.org/ 的离线版本:
go get golang.org/x/tour
此时获取的 tour 包被放在 $GOPATH/pkg/mod/golang.org/x 目录下,需要将其转移到 $GOPATH/src/golang.org/x 目录下,并更名为 tour:
cp $GOPATH/pkg/mod/golang.org/x/[email protected] $GOPATH/src/golang.org/x/tour -rf
运行:
tour
控制台自动打开浏览器:
现在可以离线访问 Go Tour 了!
- 创建第一个自定义的包
- 创建包目录:
mkdir $GOPATH/src/github.com/user/stringutil
-
在该目录中创建名为 reverse.go 的文件,内容如下:
-
用 go build 命令来测试该包的编译:
go build github.com/user/stringutil
-
确认 stringutil 包构建完毕后,修改原来的 hello.go 文件,引用自定义的包:
-
安装 hello 程序,此时 stringutil 包也会被自动安装:
go install github.com/user/hello
- 运行:
可以看到自定义的包的实现达到预期效果。
- 第一次测试
可以通过创建文件 $GOPATH/src/github.com/user/stringutil/reverse_test.go 来为 stringutil 添加测试,其内容如下:
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{
"Hello, world", "dlrow ,olleH"},
{
"Hello, 世界", "界世 ,olleH"},
{
"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
接着使用 go test 运行该测试:
【实验总结】
本次实验主要完成 go 语言开发的环境和简单的入门使用,其中遇到的问题有:
-
下载 go tools 源码时出现以下情况:
暂时未找到该问题的原因,因此选择直接从对应的 github 库下载:
-
安装 gotour 失败:
按照课程网站的步骤运行 gotour 时出现以下问题:
根据博客服务计算-CentOS下安装Go开发环境遇到的一些问题所述可能是 github 上的仓库不再维护,而里面提到的 bitbucket 同样也 404 了,而本人又没有梯子,该步骤一度无法进行。
后来查阅到Go 技巧分享:Go 国内加速镜像、Go 技巧分享:本地安装 A tour of Go(含中文),设置了国内代理才解决该问题。事实上在安装 go tools 时尝试过设置代理,但彼时还没有弄清楚具体做法,因此采用了其他方式。
【参考资料】
golang安装指南(中文版)
从零开始搭建Go语言开发环境
一键解决 go get golang.org/x 包失败
服务计算-CentOS下安装Go开发环境遇到的一些问题