Lesson 0001 · Go Zero to One
你的第一个 Go 函数
你不需要重新学习“什么是函数”。这一课只学会读写 Go 的函数签名、整数条件和返回值,并第一次用 Go 自带测试获得反馈。
完成标志
go test -v 的 6 个案例全部通过,go run . 输出 450 words takes about 3 minutes。先连接已有知识
// TypeScript
function readingTime(wordCount: number): number {
return 0
}
// Go
func readingTime(wordCount int) int {
return 0
}
两段代码表达同一件事。Go 使用 func;参数写成“名称 类型”;右括号后的 int 是返回类型。Go 的 int 是整数,不等同于 TypeScript 可表示小数的 number。函数语法与基本类型可在 A Tour of Go 核对。
立即检索
在 wordCount int 中,Go 的书写顺序是什么?
理解这次任务
内容社区需要显示文章阅读时长。规则是每分钟 200 词,不足一分钟向上取整;零或负数返回 0。
0 → 0 1 → 1 200 → 1 201 → 2 450 → 3Go 的整数除法会截掉小数,因此你需要用余数运算符 % 判断是否存在不足一分钟的部分。条件语句写法:
if 条件 {
// 条件成立时执行
}
开始反馈循环
打开 main.go,只修改 readingTime 函数。先运行现状:
cd /Users/qian/Documents/nain-learn/tracks/01-go/projects/go-foundations/lesson-0001
go env GOVERSION
go test -v
go env GOVERSION 应显示 go1.26.5。项目通过 go.mod 指定工具链;本机启用了 GOTOOLCHAIN=auto,首次运行会自动下载所需版本,无需使用 GOPATH 创建项目。
部分测试通过、部分失败是预期结果。实现时可以按这个顺序思考:
- 输入小于或等于 0 时立即返回 0。
- 用整数除法算出完整分钟数。
- 用
%判断是否有余数;有则把分钟数加一。 - 返回结果,再运行测试。
第一次写 Go 时可以看:需要的语法
minutes := wordCount / wordsPerMinute
if wordCount%wordsPerMinute != 0 {
minutes++
}
return minutes
:= 在函数内部创建变量并让编译器推断类型;minutes++ 把整数加一。
最终验证
gofmt -w .
go test -v
go run .
Go 官方把测试写在 _test.go 文件中,并通过 go test 执行;本课的测试已经准备好,你现在只需要观察它如何描述输入、输出和失败信息。[Go 官方测试教程]
完成后
回复“完成”。我会检查代码,并请你不用看代码解释 201 / 200 为什么会得到 2 / 1。这份检索证据将决定是否进入下一课“变量、类型与零值”。