安装
Mac 下安装 Go 编译器只要执行
1 | brew install go |
就可以了。各 linux 也可以使用自己的包管理器直接安装
工作空间
首先找一个地方放我们的工作空间,比如我选的是$HOME/Documents/gowork。这个目录的位置不能是 Go 安装目录。
1 | $ mkdir $HOME/Documents/gowork |
Go代码必须放在工作空间内。它其实就是一个目录,其中包含三个子目录:
- src 目录包含Go的源文件,它们被组织成包(每个目录都对应一个包),
- pkg 目录包含包对象,
- bin 目录包含可执行命令。
下面是一个例子:
1 | bin/ |
GOPATH 环境变量
执行下面的命令
1 | $ export GOPATH=$HOME/gowork |
第一个程序
我在 github 的用户名是 questionlin,我要做的第一个程序叫 hello。执行命令
1 | $ mkdir -p $GOPATH/src/github.com/questionlin/hello |
写入一下代码
1 | package main |
执行一下命令编译。这个命令在任何目录都可以执行,不需要在工作空间
1 | $ go install github.com/questionlin/hello |
如果在工作空间可以省略路径
1 | $ cd $GOPATH/src/github.com/questionlin/hello |
现在执行看看
1 | $ $GOPATH/bin/hello |
第一个库
首先创建目录:
1 | $ mkdir $GOPATH/src/github.com/questionlin/stringutil |
写入一下内容
1 | // stringutil 包含有用于处理字符串的工具函数。 |
使用 go build 来编译:
1 | $ go build github.com/questionlin/stringutil |
如果你在该包的源码目录中,只需执行:
1 | $ go build |
修改原来的 hello.go 文件,加入这个包:
1 | package main |
然后在编译一次 hello:
1 | $ go install github.com/questionlin/hello |
现在再运行一次
1 | $ hello |
完成以上步骤后,你的工作区间应该是像最上面介绍工作空间那章里一样
包名
Go源文件中的第一个语句必须是
1 | package 名称 |
这里的 名称 即为导入该包时使用的默认名称。 (一个包中的所有文件都必须使用相同的 名称。)
Go的约定是包名为导入路径的最后一个元素:作为 “crypto/rot13” 导入的包应命名为 rot13。
可执行命令必须使用 package main。
测试
Go拥有一个轻量级的测试框架,它由 go test 命令和 testing 包构成。
你可以通过创建一个名字以 _test.go 结尾的,包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件来编写测试。 测试框架会运行每一个这样的函数;若该函数调用了像 t.Error 或 t.Fail 这样表示失败的函数,此测试即表示失败。
我们可通过创建文件 $GOPATH/src/github.com/questionlin/stringutil/reverse_test.go 来为 stringutil 添加测试,其内容如下:
1 | package stringutil |
接着使用 go test 运行该测试:
1 | $ go test github.com/questionlin/stringutil |
最后给一个墙内能用的 golang 学习教程: https://tour.go-zh.org/list