系统硬件:
CPU: Intel Core i5-8300H
机带RAM: 8G
显卡: GTX 1050Ti
操作系统:
windows下用VMware15运行Ubuntu18.04
Visual Studio Code 是一个轻量级但功能强大的源代码编辑器,可在 Windows,macOS 和 Linux 桌面上运行。它内置了对JavaScript,TypeScript和Node.js的支持,并为其他语言(如C ++,C#,Java,Python,PHP,Go)和运行时(如.NET和Unity)提供了丰富的扩展生态系统。在ubuntu下可以直接去官网下载:
在VScode的插件商店中安装中文插件(有很多功能强大的插件,一定要活用插件商店)
sudo apt-get install golang
查看版本
go version
设置环境变量
1. 创建工作空间
mkdir $HOME/gowork
2. 配置环境变量
vim ~/.profile
在~/.profile文件中添加以下两行:
export GOPATH=$HOME/gowork
export PATH=$PATH:$GOPATH/bin
如下图所示:
然后执行这些配置
source $HOME/.profile
3. 检查配置
go env
创建hello, world
创建源代码目录(-p按目录层级自动创建目录)
mkdir $GOPATH/src/github.com/github-user/hello -p
在VScode中创建hello.go
package mainimport "fmt"func main() {fmt.Printf("hello, world\n")
}
在终端运行
go run hello.go
安装必要的插件
1. 安装git客户端
sudo apt-get install git
2. 安装go的一些工具
进入 vscode ,它提示要安装一些扩展,但golang.org 只有通过科学上网才能连上,于是全部failed to install。这里用其他方法:
首先创建文件夹
mkdir $GOPATH/src/golang.org/x/ -p
由于golang.org/x所有包都在GitHub有镜像,所以我们手动clone
git clone https://github.com/golang/tools $GOPATH/src/golang.org/x/tools
安装工具包
go install golang.org/x/tools/go/buildutil
退出VScode,根据提示进行扩展安装,但是因为如前所述的原因,部分扩展依然无法安装,这里暂未解决。
安装运行hello world
同样由于科学上网的原因,这一步似乎也有问题…
1. 我的第一个库
让我们编写一个库,并让 hello 程序来使用它。同样,第一步还是选择包路径
mkdir $GOPATH/src/github.com/user/stringutil
接着在目录中创建名为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 build命令来测试该包的编译
go build github.com/user/stringutil
这不会产生输出文件。想要输出的话,必须使用 go install 命令,它会将包的对象放到工作空间的 pkg 目录中。确认 stringutil 包构建完毕后,修改原来的 hello.go 文件去使用它:
package mainimport ("fmt""github.com/user/stringutil"
)func main() {fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
无论是安装包还是二进制文件,go 工具都会安装它所依赖的任何东西。 因此当我们通过
go install github.com/github-user/hello
来安装hello程序时,stringutil包也会自动被安装。
运行此程序的新版本,得到输出:
2. 测试
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 stringutilimport "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 help test 或从 testing 包文档 中查看。
总的来说安装过程并不复杂,主要碰到的问题是golang.org需要科学上网的帮助,一些扩展没法安装。本人对go语言的工作空间的理解还是处于一知半解的状态,希望在真正开始对go语言的学习后,可以加深一些理解。