github传送门
写在前面
本来是想在centOS上装GO语言环境的,但是由于在安装vscode时yum的报错找不到解决办法转向windows了
$ yum check-update
$ sudo yum install code
执行第一句就弹出下面的报告
Cannot find a valid baseurl for repo: code
在CSDN跟stack overflow都找过办法还是没有解决
windows下配置安装GO开发环境
- 下载安装
windows下十分方便,只要去go语言中文网下载windows版本的Go安装包安装即可。
- 设置环境变量
将安装目录的bin文件夹路径复制到Path环境变量里
根据官方文档需要建立一个工作空间,将路径添加到GOPATH里,并创建三个文件夹
- src 目录包含 Go 的源文件
- pkg 目录包含包对象
- bin 目录包含可执行命令
详见官方文档
另外将GO安装目录添加到环境变量GOROOT
系统变量有的话要修改系统变量那里的变量值。
安装VScode
- 下载安装
Visual Studio Code 安装包下载
安装后记得设置一下环境变量(同样将bin文件夹的目录添加到Path环境变量里) - 扩展安装
- 如果需要可以安装插件(cmd)
go get -u -v github.com/nsf/gocode
go get -u -v github.com/uudashr/gopkgs/cmd/gopkgs
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/alecthomas/gometalinter
go get -u -v github.com/haya14busa/goplay/cmd/goplay
go get -u -v github.com/tylerb/gotype-live
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/sourcegraph/go-langserver
go get -u -v github.com/fatih/gomodifytags
go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/acroca/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v golang.org/x/tools/cmd/godoc
go get -u -v github.com/zmb3/gogetdoc
go get -u -v golang.org/x/tools/cmd/goimports
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/sqs/goreturns
go get -u -v github.com/josharian/impl
go get -u -v sourcegraph.com/sqs/goreturns
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
go get -u -v github.com/cweill/gotests/...
go get -u -v honnef.co/go/tools/...
第一个Go程序
我直接打开工作空间(E:\gojob文件夹)
代码如下
package main
import "fmt"
func main() {
fmt.Printf("Hello, world.\n")
}
保存后在VSCode的控制台运行
- go run
- go build
go build .\src\github.com\chenjb58\hello.go
结果在当前路径下生成hello.exe文件
- go install
go install hello.go
结果在bin文件夹下生成了hello.exe
-
选择包路径(我们将使用 github.com/chenjb58/stringutil) 并创建包目录,在该目录中创建名为 reverse.go 的文件,内容如下:
在这个目录下 go build(这不会产生输出文件) -
修改原来的 hello.go 文件
package main
import (
"fmt"
"github.com/chenjb58/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
然后执行
go install .\src\github.com\chenjb58\hello
可以看到pkg文件夹多出了一些文件
安装 hello 程序时,stringutil 包也会被自动安装。
测试
通过创建文件 $GOPATH/src/github.com/chenjb58/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 test src/github.com/chenjb58/stringutil
结果如下: