学 Go: 编程课程
学 Go: 编程课程 — —一款手机上的 Golang 教程,配备编译器、race detector 和每日 kata
学 Go: 编程课程 是一款面向初学者和在职开发者的免费 iOS 和 Android Golang 教程,配备 Go 编译器和编辑器,可在真实 Go toolchain 上运行你的代码(需要互联网连接)。使用 gofmt、go vet 和 race detector 检查代码,并完成 51 门课程:从第一个 fmt.Println 一直到 goroutines、REST APIs 和 gRPC;遇到难以理解的部分,还可以向 AI Mentor 求助。
- 价格
- 免费,可升级至 Pro
- 平台
- iOS 和 Android
- 语言
- 22
- 年龄分级
- 4+
- 需要
- iOS 15.1 或更高版本


删除 go keyword,看看同样的工作耗时会变成原来的三倍。
这是应用让你用 Go 做的第一件事:运行三个各需 120 ms 的任务,看到总耗时远低于 360 ms,然后删除那个让它们并发执行的单一 keyword。这个语言的核心魅力就在于这一个词,而应用会让你先亲身感受到它,再解释其中原理。
这是什么
学 Go: 编程课程 是一款免费的 iOS 和 Android 应用,用于学习 Go——这门编译型语言支撑着如今大量的云端和服务器软件。应用包含 51 门课程和 203 节从初级到高级的课程内容、一个可在真实 Go toolchain 上运行程序的代码编辑器、每日 kata、配备真实 race detector 的 Concurrency Lab,以及一条带你构建自己的 HTTP core 的引导式学习路线。AI Mentor 可以回答关于任何课程的问题。
应用内
界面展示





课程
Go 课程涵盖的内容
应用自有课程列表中的 51 门课程和 203 个课节,等级从 A1 到 C1,内容从第一个程序一直讲到性能分析和垃圾回收器。
认识 Go 与基础知识
Go 是什么以及 Google 为什么创建它,随后学习变量、类型和零值、常量,以及使用 if、for 和 switch 的控制流。
函数、切片和映射
学习具有多个返回值的函数、defer 和可变参数,数组、切片和映射,以及字符串、fmt 格式化和 time 包。
结构体、指针和接口
学习结构体和方法、值接收者与指针接收者的区别、指针、隐式接口和鸭子类型,以及用于组合的嵌入。
错误、包和标准库
学习使用 errors.Is 和 errors.As 进行显式错误处理、包和模块、文件 I/O 与 JSON、正则表达式、排序以及带缓冲的 I/O。
Goroutine、通道和 Sync
学习 Goroutine 和通道基础、select 和通道模式、互斥锁与 sync 包、用于取消操作的 context,以及工作池和流水线。
HTTP、REST 和数据库
使用 net/http 构建 HTTP 服务器和客户端,使用 Gin 构建 REST API,中间件模式,使用 sqlx 和 pgx 配合 database/sql,GORM 以及 WebSockets。
测试、工具和部署
学习表驱动测试和子测试、使用 Cobra 构建命令行应用、使用 Viper 进行配置、使用 slog 进行结构化日志记录,以及多阶段 Docker 构建。
高级 Go
学习带类型参数和约束的泛型、基准测试和 pprof 性能分析、使用 Protocol Buffers 的 gRPC、反射以及内存模型。
工作原理
一次学习如何进行
每节课程都是一段简短的阅读内容,后面紧接着是可运行的代码,让理解和实践在同一次学习中完成。
阅读一节简短课程
打开一门课程,花几分钟完成一节课。课程使用通俗易懂的语言讲解理论,并配有一个小示例,例如第一课中的 package main 和 fmt.Println 程序。
在真实 Go toolchain 上运行
编辑器会将你的程序发送给 Go runner 并显示输出。gofmt、go vet 和 race detector 也以同样的方式运行,因此你点击运行时需要连接网络;如果程序崩溃,应用会用通俗易懂的语言解释错误。
从另一个角度练习
学完一个主题后,完成测验、解决每日 kata、逐步解开一道并发谜题,或让 AI Mentor 对你进行提问。每种练习都会从不同角度审视同一个概念,这正是它能够真正被记住的原因。
包含内容
应用包含的内容
51
课程,A1 至 C1
51 门课程共 203 节课,内容涵盖 Go 基础、slices 和 maps,以及 interfaces、错误处理、goroutines、net/http、Gin、数据库访问、Docker 部署、gRPC 和 garbage collector。
-race
配备 race detector 的 Concurrency Lab
六道可运行的谜题涵盖:两个 goroutines 使用一个 channel、无缓冲握手、WaitGroup fan-out、会丢失更新的 counter、两个 writers 操作同一个 map,以及 deadlock。你还可以在 race detector 下运行自己的代码;该功能免费且没有每日限制。
每日
每天一个新 kata
一道根据案例表进行检查的 Go 练习,其中包括隐藏案例,完成后还会提供参考说明。每日 kata 对所有人免费开放;Pro 可解锁完整题库、参考 solutions 和说明。
Doctor
Go Doctor
检查 gofmt 是否会重写你的文件并应用修改,运行 go vet 获取检查结果;使用 Pro,还可以询问 compiler 的 escape analysis,了解某个值为何会进行分配。格式化次数不限,免费方案下 go vet 每天最多运行三次。
7 个步骤
构建你自己的 HTTP core
一条引导式学习路线:你将亲自编写 request、response、作为函数的 handlers、routing、path parameters、middleware 以及带 wrapped errors 的 JSON,并一次完成一个经过检查的步骤。
AI
AI Mentor 和模拟面试
让 AI Mentor 解释某个概念、为你制定学习路线或对你进行测验。模拟面试会在 junior、mid 或 senior 级别提出五道 Go 问题,并为你的回答评分;每周可免费进行一次计分面试。
Recall
Go Recall 和 Go by Example
关于经典易错点的简短“这会打印什么?”卡片,例如 defer 顺序、nil maps 以及共享内存的 append;此外还有可运行的标准库代码片段,你可以运行并编辑这些片段。
背景
为什么要学习 Go 进行后端开发?它有什么不同之处?
Go 是由 Google 创建的静态类型编译型语言,广泛用于 web services、命令行工具和云基础设施。它适合后端开发的原因在于,许多功能都已内置:并发是语言的一部分,标准库涵盖了小型服务所需的大多数功能,而且程序会编译成单个 binary,无需额外安装其他组件。这门语言刻意保持精简,因此阅读起来很快,但初学者需要尽早适应一些不熟悉的习惯。
Goroutines 和 channels无需管理线程即可实现并发
goroutine 是使用 go keyword 启动的函数,而 channel 是 goroutines 用来传递值的管道。两者结合后,可以替代大多数手写的线程处理代码,这也是为什么并发会被尽早讲解,而不是留到高级主题再学习。
Errors 是值没有 exceptions
可能失败的 Go 函数会将 error 作为普通的第二个返回值,调用者会在当场检查它。相比 try block,这需要编写更多代码,但也意味着每条失败路径都会清楚地呈现在你正在阅读的代码中。
Implicit interfaces在编译时检查的 duck typing
只要拥有正确的方法,一个 type 就满足某个 interface;无需进行任何声明。这让 packages 之间保持松耦合,同时也带来了 Go 中一个经典的易错点:一个持有 nil pointer 的 interface 本身并不是 nil。
单个 binary 和庞大的标准库部署为何如此简单
编译后的 Go 会生成单个 executable,而 net/http、encoding/json 和 database/sql 等 packages 都随语言提供。小型服务通常不需要第三方 framework,这也是 Go 程序的 Docker images 可以很小的原因之一。
是否适合
适合哪些人——不适合哪些人
如果你符合以下情况,就很适合
- 想找一门可以在手机上利用短时间学习的 Golang 课程
- 已经会写另一种语言,想亲眼看到 goroutine 和通道实际运行
- 正在考虑后端或云计算岗位,想练习 Go 面试题并获得评分反馈
- 相比长视频,更喜欢通过小练习和易错点卡片来学习
- 想检查自己编写的代码中的格式化结果、vet 检查结果和数据竞争
如果你符合以下情况,这不是适合你的工具
- 需要在应用内运行导入 net/http 或使用泛型的程序,但应用内运行器是 Go 1.13 沙盒
- 想在没有网络连接的情况下运行代码,因为运行器需要联网
- 希望所有内容都免费:第一门课程、每日 kata 和每日 AI Mentor 使用额度免费,Pro 可解锁其余内容
- 需要构建并发布大型多包服务,这仍然需要笔记本电脑和完整工具链
问题
常见问题
在手机上学习 Golang 的最佳方式是什么?
短课程加上亲自运行的代码,比单纯阅读更有效;而 Go 的优势在于它的最佳特性——goroutine 和竞态检测器——都需要通过实际运行来理解。学 Go: 编程课程 将几分钟的课程与编辑器、每日 kata 和 Concurrency Lab 结合起来。该应用可在 iOS 和 Android 上免费开始使用,并提供 51 门从入门到高级、按顺序编排的课程。
可以在手机上编译并运行 Go 代码吗?
可以,但需要网络连接。学 Go: 编程课程 会将你的程序发送到 Go 运行器并显示输出;同一个运行器还提供 gofmt、go vet 和竞态检测器。代码并不是在手机本身执行的,因此按下运行按钮时必须联网;运行器也有一些限制,例如较小的内存额度和最大的二进制文件大小。
应用内运行器支持泛型吗?
目前不支持。学 Go: 编程课程 中的运行器使用 Go 1.13,而泛型是在 Go 1.18 中加入的,因此使用类型参数或 any 关键字的程序无法在那里编译。出现这种情况时,应用会用通俗的语言说明原因,并建议使用较旧的写法。泛型课程本身仍然可以作为课程内容阅读。
Go 竞态检测器是什么?应用如何使用它?
当两个 goroutine 在没有锁保护的情况下访问同一块内存时,竞态检测器会报告这一问题;这类 bug 只会偶尔出现。在 学 Go: 编程课程 中,Concurrency Lab 会在检测器下运行一些谜题,例如让 200 个 goroutine 更新同一个计数器,并允许你添加互斥锁后再次运行。你也可以粘贴自己的 goroutine 代码,在检测器下运行。
Go kata 是什么?
kata 是一种小而专注的编程练习,例如正确反转包含非 ASCII 文本的字符串,或包装错误以便 errors.Is 仍能找到它。学 Go: 编程课程 每天提供一道新的 kata,会根据包含隐藏用例在内的一组用例检查你的函数,并在之后解释其中的惯用写法。每日 kata 对所有人免费。
开始学习需要编程经验吗?
不需要。学 Go: 编程课程 从 Go 是什么以及它为何存在开始讲起,然后学习变量、类型和控制流;每个概念都会先用通俗语言解释,再进行练习。掌握其他语言的经验能帮助你更快通过前期课程,但第一门课程是为零基础学习者编写的。
Learn Go 是免费的吗?
该应用可免费下载。第一门课程免费,此外还包括每日 kata、每日 AI Mentor 使用额度、无限次 gofmt 检查、无限次在竞态检测器下运行,以及每天几次 go vet 运行。Pro 可解锁所有课程、移除广告、提供无限 AI Mentor 使用次数,并开放 kata 题库和逃逸分析。
完成后会有证书吗?
有。通过最终考试后,你会获得该课程的结业证书。证书会展示你完成的学习内容,和一个你能在面试中讲解的小项目放在一起很合适,但它不属于经过认证的学历资格。
Learn Go 能帮助准备 Golang 面试吗?
可以。模拟面试会在初级、中级或高级难度下提出五个问题,内容从切片与数组的区别,到接口值在运行时保存的内容,并会为你的回答评分和提供反馈。Go Recall 卡片会强化常见易错点,面试中表现薄弱的主题也会加入你的复习卡组。每周一次计分面试免费。
它支持哪些平台和语言?
学 Go: 编程课程 可通过 App Store 在 iOS 上运行,也可通过 Google Play 在 Android 上运行,界面支持 22 种语言。应用评级为 4+,因此其中的任何内容都没有年龄限制。
更多 CoddyKit 产品
可在 iOS 和 Android 上使用。