$GOPATH/src/github.com/{your-user-id}/hello
。$GOPATH
的约定(这是最简单的设置方式)。那么你可以执行以下命令 mkdir -p $GOPATH/src/github.com/bob/hello
快速创建目录。$GOPATH/src/github.com/{your-user-id}/integers
。一些读者喜欢将所有代码放到一个文件夹中,比如「learn-go-with-tests/hello」。简而言之,这取决于你如何组织你的文件夹。hello.go
的文件并编写以下代码,键入 go run hello.go
来运行程序。main
包,并在其中定义一个 main
函数。包是一种将相关的 Go 代码组合到一起的方式。func
关键字通过函数名和函数体来定义函数。import "fmt"
导入一个包含 Println
函数的包,我们用它来打印输出。fmt.Println
会产生副作用(打印到标准输出),我们发送的字符串在自己的领域内。func
创建了一个新函数,但是这次我们在定义中添加了另一个关键字 string
。这意味着这个函数将返回一个字符串。hello_test.go
的新文件,来为 Hello
函数编写测试go test
,它应该通过测试了!为了再次验证,可以尝试改变 want
字符串来破坏测试的结果。xxx_test.go
的文件中编写Test
开始t *testing.T
*testing.T
的变量 t
是你在测试框架中的 hook(钩子),所以当你想让测试失败时可以执行 t.Fail()
之类的操作。if
语句非常类似于其他编程语言。varName := value
的语法声明变量,它允许我们在测试中重用一些值使代码更具可读性。t.Errorf
t
的 Errorf
方法打印一条消息并使测试失败。f
表示格式化,它允许我们构建一个字符串,并将值插入占位符值 %q
中。当你的测试失败时,它能够让你清楚是什么错误导致的。go test
,你应该会获得一个编译错误Hello
来接受一个参数。Hello
函数以接受字符串类型的参数main.go
会编译失败,因为你没有传递参数。传入参数「world」让它通过。name
参数并用 Hello,
字符串连接它,Hello
时创建 "Hello, "
字符串实例。t *testing.T
,这样我们就可以在需要的时候令测试代码失败。t.Helper()
需要告诉测试套件这个方法是辅助函数(helper)。通过这样做,当测试失败时所报告的行号将在函数调用中而不是在辅助函数内部。这将帮助其他开发人员更容易地跟踪问题。如果你仍然不理解,请注释掉它,使测试失败并观察测试输出。if
修复代码。Hello
。Hello
添加另一个字符串参数来解决编译问题hello.go
中没有传递足够的参数给 Hello
函数if
检查语言是否是「西班牙语」,如果是就修改信息"French"
你会得到 "Bonjour, "
switch
if
语句检查一个特定的值时,通常使用 switch
语句来代替。如果我们希望稍后添加更多的语言支持,我们可以使用 switch
来重构代码,使代码更易于阅读和扩展。prefix string
)。prefix
的变量。int
是 0,对于字符串它是 ""
。return
而不是 return prefix
即可返回所设置的值。case
语句匹配,将会执行 default
分支。Hello, world
中学到这么多东西呢?if
,const
,switch
Hello()
到 Hello("name")
,到 Hello("name", "french")
。