Lesson 0001 · Go Zero to One

你的第一个 Go 函数

你不需要重新学习“什么是函数”。这一课只学会读写 Go 的函数签名、整数条件和返回值,并第一次用 Go 自带测试获得反馈。

约 20 分钟Go 1.26Go 零基础自动测试
完成标志
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 → 3

Go 的整数除法会截掉小数,因此你需要用余数运算符 % 判断是否存在不足一分钟的部分。条件语句写法:

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 创建项目。

部分测试通过、部分失败是预期结果。实现时可以按这个顺序思考:

  1. 输入小于或等于 0 时立即返回 0。
  2. 用整数除法算出完整分钟数。
  3. % 判断是否有余数;有则把分钟数加一。
  4. 返回结果,再运行测试。
第一次写 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。这份检索证据将决定是否进入下一课“变量、类型与零值”。