我的环境:macOS:10.14.5
1 安装
1、官网地址:https://golang.org/dl/,官网下载pkg文件到本地,一路安装即可。


2、安装后通过go version或go env来查看是否安装成功

2 第一个工程
这里的第一个工程,参考官网的例子,https://www.youtube.com/watch?v=XCsL89YtqCs
1、创建工程文件夹
- 创建工程goTest1,创建src/demo/hello文件夹

2、 创建第一个go文件
- 在hello文件中创建hello.go文件,内容如下:
package main
import "fmt"
func main(){
fmt.Println("hello worls!")
}
- 在hello目录下执行
go install,将其编译为可执行文件。
(1)在此之前需要先设置GOPATH,否则将会有如下报错,因为不知道将可执行文件放在哪里。
PS:go install用于编译并安装指定的代码包及它们的依赖包
(2)设置GOPATH
export GOPATH=~/Documents/goExe/goTest1/
(3)设置成功后,再执行go install,生成的可执行文件会自动生成在goTest1/bin下。此时发现根目录下多了一个bin目录。

4. 执行文件
==方法1:==在goTest1/bin/下,可直接执行hello文件。但是每次编译完都要去到bin目录下很不方便,所以我们可以采用方法(2)

==方法2:==给bin目录设置一个快捷路径,在PATH变量中添加上bin的路径:
export PATH=~/Documents/goExe/goTest1/bin:$PATH
再次在hello文件下执行hello文件,可执行成功。

3、包引用
那如果hello.go类想引用另一个string.go类的方法该如何处理呢
- 创建string.go类,路径及代码如下

package string
func Reverse(s string) string{
b := []byte(s)
for i := 0; i < len(b)/2; i++ {
j := len(b) - i - 1
b[i], b[j] = b[j], b[i]
}
return string(b)
}
- 在hello.go中加上对string类的引用
PS:这里对其他类的引用要以src目录为根目录
package main
import (
"fmt"
"demo/string"
)
func main(){
fmt.Println(string.Reverse("hello world!"))
}
- 重新编译hello.go文件后,运行hello,发现输出成功变成了倒序

- 若我们在string目录下,对string.go文件执行
go build、go install,则会在src目录下生成一个pkg目录,如图。
PS:go build命令用于编译我们指定的源码文件或代码包以及它们的依赖包。

4. 单元测试
- 在string文件夹里创建string_test.go,代码如下:
package string
import "testing"
func Test(t *testing.T) {
var tests = []struct {
s, want string
}{
{"Backword", "drowkcaB"},
{"Hello, 世界", "界世,olleH"},
{"", ""},
}
for _, c := range tests {
got := Reverse(c.s)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.s, got, c.want)
}
}
}
- 在string目录下执行
go test,测试未通过,输出如下:

- 分析报错信息,是中文乱码问题。回到string.go类,发现输入的接受类型为byte,不支持utf-8。根据案例,将其改成rune:

- 再试下,测试通过:

参考文章:https://www.cnblogs.com/fengff/p/11434399.html
本文介绍了在MAC上安装Go语言的过程,并详细讲述了如何创建第一个Go工程,包括创建工程文件夹、编写Go文件、处理包引用以及进行单元测试。在遇到问题时,如GOPATH设置、包引用和单元测试中的错误,都提供了相应的解决方法。
1万+

被折叠的 条评论
为什么被折叠?



