博客目录(阅读时间:10分钟)
一.win10
0.系统环境
操作系统:win10 家庭版 1909
硬件信息(做基本的golang开发,硬件要求不高):
1. win10配置golang环境
①下载相关软件
GO 1.15 https://golang.org/dl/
VSCODE https://code.visualstudio.com/
【注:本文主要着力于配置golang,省略安装vscode的步骤】
②创建gowork工作空间
按照https://go-zh.org/doc/code.html所说
在PC的任意目录下创建gowork文件夹,并创建src、bin和pkg三个子文件夹。此处我将其放在固态硬盘所在的目录。
Go代码必须放在工作空间内。它其实就是一个目录,其中包含三个子目录:
src 目录包含Go的源文件,它们被组织成包(每个目录都对应一个包),
pkg 目录包含包对象,
bin 目录包含可执行命令。
③配置环境变量(GOPATH+PATH)
a.GOPATH
新建环境变量GOPATH,值为gowork目录,如C:\gowork
b.PATH
在PATH下添加gowork目录的bin文件夹,如C:\gowork\bin
④验证环境配置结果
2. win10配置vscode go环境
①安装vscode的go插件
vscode添加go插件
②尝试运行
这时就可以在gowork/src目录下写一个hello.go:
package main
import "fmt"
func main() {
fmt.Printf("Hello word")
}
此时在命令行输入go run hello.go可以直接运行,但在vscode下还不能运行。
③vscode运行报错情况(install failed)
用vscode打开gowork/src目录,右下角提示需要安装依赖包
install all后出现以下情况:
Installing github.com/mdempsky/gocode FAILED
Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs FAILED
Installing github.com/ramya-rao-a/go-outline FAILED
Installing github.com/acroca/go-symbols FAILED
Installing golang.org/x/tools/cmd/guru FAILED
Installing golang.org/x/tools/cmd/gorename FAILED
Installing github.com/cweill/gotests/... FAILED
Installing github.com/fatih/gomodifytags FAILED
Installing github.com/josharian/impl FAILED
Installing github.com/davidrjenni/reftools/cmd/fillstruct FAILED
Installing github.com/haya14busa/goplay/cmd/goplay FAILED
Installing github.com/godoctor/godoctor FAILED
Installing github.com/go-delve/delve/cmd/dlv FAILED
Installing github.com/stamblerre/gocode FAILED
Installing github.com/rogpeppe/godef FAILED
Installing github.com/sqs/goreturns FAILED
Installing golang.org/x/lint/golint FAILED
④vscode go配置
根据https://goproxy.io/zh/的介绍:
如果您使用的 Go 版本是 1.13 及以上 (推荐)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
# 设置不走 proxy 的私有仓库,多个用逗号相隔(可选)
go env -w GOPRIVATE=*.corp.example.com
# 设置不走 proxy 的私有组织(可选)
go env -w GOPRIVATE=example.com/org_name
命令行输入:
重新打开Vscode -> install all,配置成功。
⑤再次运行golang+vscode helloworld
用vscode打开gowork/src文件夹:
vscode调试的快捷键为F5,按下F5运行代码如下:
至此,golang的helloworld已顺利完成啦~~
3. 安装与运行 go tour
在【二.centos7】中展示。
4. golang的第一个包与测试
在【二.centos7】中展示。
5. 其他可能遇到的问题
vscode使用F5进行调试时,遇到 go:cannot find main module 的问题
在launch.json下进行如下配置,再运行调试即可:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "auto",
"remotePath":"",
"host": "127.0.0.1",
"program": "${fileDirname}",
"env": {
"GO111MODULE": "off"
},
"args": [],
"showLog": false,
}
]
}
二.centos7
0.系统环境
操作系统:CentOS7
硬件信息:使用virtual box配置虚拟机(内存3G、磁盘30G)
1.virtual box安装centos7
此步骤比较简单,借鉴博客即可轻松完成,由于不是主要内容,只贴出centos7下载地址和借鉴博客。
centos7下载地址:https://www.centos.org/download/
借鉴博客:https://www.cnblogs.com/gaomanito/p/11460381.html
2.centos7配置golang环境
①下载相关软件+创建gowork工作空间+配置环境变量(GOPATH+PATH)+验证环境配置结果
此处使用老师博客上推荐的yum安装的方法,至于博客上提到的版本不是最新的问题,其实使用适当的源就可以解决。
依次输入以下指令即可:
rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
yum install golang
在安装完golang后,与win10相似,需要自己创建gowork文件夹,并且配置GOPATH和PATH的环境变量。
依次输入以下指令即可:
mkdir -p ~/go/{bin,pkg,src}
echo 'export GOPATH="$HOME/go"' >> ~/.bashrc
echo 'export PATH="$PATH:${GOPATH//://bin:}/bin"' >> ~/.bashrc
安装并配置完毕后,输入go version检验是否配置成功:
输入go env检查环境变量:
②创建helloworld
创建$GOPATH/src/github.com/user/hello文件夹如下:
mkdir $GOPATH/src/github.com/user/hello -p
用vscode创建hello.go文件并使用以下代码:
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
使用go run hello.go运行如下:
3.centos7配置vscode go环境
使用rpm下载并安装vscode,官方教程如下:https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions
依次输入以下指令即可:
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
yum check-update
sudo yum install code
vscode配置go环境的方法与win10一致,请借鉴【一.win10】中的操作即可。
4.安装与运行 go tour
根据https://github.com/Go-zh/tour配置gotour,并运行离线版的gotour,指令如下:
go get -u github.com/Go-zh/tour
./tour //在$GOPATH/bin文件夹下生成tour
当然,也可以在线使用gotour:https://tour.go-zh.org/welcome/1
个人而言更倾向于前者,因为经测试本地运行速度更快。
5.golang的第一个包
首先,在进行测试前,务必要将之前为了配置vscode而设置的https://goproxy.io相关环境变量去掉,不然在go build时会报错(比如会让你输入github的账户密码,而无法搜索到本地的github.com文件夹)。
go env -w GO111MODULE=off
go env -w GOPROXY=" "
①创建第一个库
创建文件夹:
mkdir $GOPATH/src/github.com/user/stringutil
接着,用vscode在该目录中创建名为 reverse.go 的文件,内容如下:
// stringutil 包含有用于处理字符串的工具函数。
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)
}
在该目录下编译该项目:
go mod init stringutil //如果报错cannot find main module,加上这行即可
go build
②修改
修改原来的 hello.go 文件(它位于 $GOPATH/src/github.com/user/hello)去使用它:
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
③运行
再次安装 hello 程序时,stringutil 包也会被自动安装。运行此程序的新版本,能看到一条新的,反向的信息:
6.golang的第一个测试
根据教程(https://go-zh.org/doc/code.html)介绍,Go拥有一个轻量级的测试框架,它由 go test 命令和 testing 包构成。
我们可以通过创建一个名字以 _test.go 结尾的,包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件来编写测试。
测试框架会运行每一个这样的函数;若该函数调用了像 t.Error 或 t.Fail 这样表示失败的函数,此测试即表示失败。
我们可通过创建文件 $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 github.com/user/stringutil
由上可知已顺利完成测试。
三.总结
本次实验内容并不复杂,主要就是配置环境+简单的golang helloworld水平的编程任务。
然而耗时还是较长,主要是因为第一次使用时遇到的坑比较多,比如虚拟机安装centos的坑、安装golang配置环境变量的坑、安装vscode因为GFW的原因得更换源的坑等等。
总的来说,本次实验的收获集中在环境的搭配上,希望在之后的实验中,能在golang语言的应用上收获更多。
四.References
老师博客:https://pmlpml.gitee.io/service-computing/post/ex-install-go/
官方DOC:https://go-zh.org/doc/code.html
菜鸟编程golang:https://www.runoob.com/go/go-tutorial.html
安装配置go:https://cloud.tencent.com/developer/article/1478660
安装配置vscode:https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions