go语言开发环境安装
文章目录
0. 系统环境
本章均在Ubuntu系统下完成,未使用虚拟机。
Ubuntu版本为18.04.5LTS,为64位系统,电脑处理器为i7。
1. 安装vscode
进入官网直接下载:
然后安装,最基本的方式是命令行,这部分可以参考网上教程,但现在Ubuntu 18已经提供Ubuntu Software,支持傻瓜式安装了:
- 直接打开安装包,点击install,等待安装完毕即可
2. 安装golang
1.命令行安装
sudo apt-get install golang
sudo apt-get install golang-go
2.查看安装情况
go version
输出
go version go1.10.4 linux/amd64
基本可以认为安装成功。
3. 配置相关
1.创建工作空间
mkdir $HOME/gowork
2.配置环境变量
gedit ~/.profile
在gedit打开的文件中添加:
export GOPATH=$HOME/gowork
export PATH=$PATH:$GOPATH/bin
令配置环境生效
source $HOME/.profile
运行输出如下,主要查看GOPATH和GOROOT两项是否添加:
可见上述两项均添加了想要添加的路径;
4. helloworld的开始
1.创建代码目录
mkdir $GOPATH/src/github.com/github-user/hello -p
注意:其实只需在工作空间($GOPATH)中创建即可,但笔者参考了部分教程,如此创建可以方便后续与github相关的管理,该路径并不是必要的。
-p
用于直接创建所有需要的目录。
2.在vscode中创建并打开hello.go
code /home/nonoli/gowork/src/github.com/LEEzanhui/hello/hello.go
3.开始编程
package main
import "fmt"
func main() {
fmt.Printf("hello world\n")
}
4.运行
先进入到hello.go的目录,再运行指令:
go run hello.go
5. 相关工具和插件的安装
安装git
1.安装git
sudo apt-get install git
2.检查git是否已经安装,输入git version命令即可,如果没有显示版本号表示没有安装git
3.配置git全局环境
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
安装go相关的工具
- 在此处遇到很多问题,最后成功克服
vscode中安装GO插件后提示要安装一系列依赖包,但安装中有些失败了,原因是相关网址无法访问😓
依照作业安排那里的教程进行
mkdir $GOPATH/src/golang.org/x/
go get -d github.com/golang/tools
然后就报错了,但这是在github上的镜像,所以解决方法很简单,直接clone;
//进入相应目录后
git clone https://github.com/golang/tools.git tools
接下来,执行go install命令安装
go install github.com/ramya-rao-a/go-outline
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/josharian/impl
go install github.com/rogpeppe/godef
go install github.com/sqs/goreturns
go install github.com/golang/lint/golint
go install github.com/cweill/gotests/gotests
// 以下省略若干
如果需要看自己还有哪些未安装,可以用vscode打开.go文件,在右下角可以看到明显的警告analysis tool missing
点击(或者它自己弹出提示)都可以查看自己缺失哪些依赖包。
但安装中仍然出现了问题:
安装goreturns时报错
分析报错的核心是少了mod,解决如下:
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/mod.git
git clone https://github.com/golang/xerrors.git
//完成后再安装依赖包
go install github.com/sqs/goreturns
//success
查看工作空间的目录结构
可以成功运行
6. go tour
注意:时代变了,gotour现在的具体用法可以参考github的README;
go get -u github.com/Go-zh/tour
报错:
package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket" (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
观察报错部分,少了net;
少了什么装什么😂:
cd $GOPATH/src/golang.org/x/
git clone https://github.com/golang/net.git net
go install net
//安装了缺失的依赖包
go get -u github.com/Go-zh/tour
在工作空间的 bin 目录中有一个可离线执行的 tour 文件。
运行tour,可在浏览器中打开一网页(本身是离线的);
gotour的具体内容不是实验内容,不在此处展示;
7. 第一个包与测试
编写一个包并运行
根据官方文档编写包:
准备工作
mkdir /home/nonoli/gowork/src/github.com/LEEzanhui/stringutil
cd /home/nonoli/gowork/src/github.com/LEEzanhui/stringutil
touch reverse.go
code reverse.go
//在vscode中进行编程
编程
stringutil.go
// Package stringutil include some fun about string
package stringutil
// Reverse 左右反转字符串
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
hello.go
package main
import (
"fmt"
"github.com/LEEzanhui/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("\n!oG ,olleH"))
}
有趣的是,go对于程序的注释也提出了要求,不写或格式不对都会警告;
运行该程序
查看文件结构
如文档中所说的,go install将stringutil.a对象放在pkg/linux_amd64目录中。
测试
准备工作
通过创建一个名字以 _test.go 结尾的,包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件来编写测试
touch /home/nonoli/gowork/src/github.com/LEEzanhui/stringutil/reverse_test.go
// 新建该文件
code /home/nonoli/gowork/src/github.com/LEEzanhui/stringutil/reverse_test.go
// vscode中打开
编程
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 github.com/LEEzanhui/stringutil/
成功完成测试
8. 安装要点小结
- 提前配置好并熟练使用git,因为网络原因,许多关键组件需要通过github获取,而git可以轻松完成该工作;
- 不要盲目照搬网上教程,由于更新,许多教程中的细节已经不符合现在的情况,遇到问题可以考虑直接访问相关网站(如github的那个仓库),看看readme和issue;
- 安装方面为主要难点,可以多参考多方的教程;
- 编程方面依据官方文档一步步进行即可,推荐vscode中进行编程,功能全面、提示到位;
9. 额外的博客链接
全文完