学 Go: 编程课程 应用图标

学 Go: 编程课程

教育 · 免费 · iOS & Android · CoddyKit

学 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 求助。

App Store — 免费下载Google Play — 免费下载
价格
免费,可升级至 Pro
平台
iOS 和 Android
语言
22
年龄分级
4+
需要
iOS 15.1 或更高版本
Go 学习路径主页,包含“开始第一课”按钮、每日目标环和功能请求卡片Go 入门概念与环境设置课程概览,包含进度条、免费的第一课课程组和“更改课程”按钮
51课程,A1 至 C1
-race配备 race detector 的 Concurrency Lab
每日每天一个新 kata
删除 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 学习路径主页,包含“开始第一课”按钮、每日目标环和功能请求卡片
学习路径主页打开后显示学习路径,其中有开始按钮、每日目标以及前往 Skill Hub 的链接。
Go 入门概念与环境设置课程概览,包含进度条、免费的第一课课程组和“更改课程”按钮
课程概览第一门课程 Go Kickoff: Concepts & Setup 标记为免费,分为三个简短课节。
代码编辑器显示一个 Go 程序,其中包含 package main、import fmt 和 fmt.Println 调用,旁边是关于第一个程序的课程
代码编辑器名为“你的第一个程序”的课程,打开了 package main 文件和运行按钮。
AI 聊天界面提供建议提示,可用于解释关键概念、提供技巧、考考我和创建学习路线图
AI Mentor四个建议提示可用于开始聊天:解释关键概念、提供技巧、考考我或制定路线图。
浅色主题主页,显示学习路径、每日目标和 Skill Hub
主页同一主页的浅色主题版本,当前课程下方显示每日目标和 Skill Hub。

课程

Go 课程涵盖的内容

应用自有课程列表中的 51 门课程和 203 个课节,等级从 A1 到 C1,内容从第一个程序一直讲到性能分析和垃圾回收器。

  1. 认识 Go 与基础知识

    Go 是什么以及 Google 为什么创建它,随后学习变量、类型和零值、常量,以及使用 if、for 和 switch 的控制流。

  2. 函数、切片和映射

    学习具有多个返回值的函数、defer 和可变参数,数组、切片和映射,以及字符串、fmt 格式化和 time 包。

  3. 结构体、指针和接口

    学习结构体和方法、值接收者与指针接收者的区别、指针、隐式接口和鸭子类型,以及用于组合的嵌入。

  4. 错误、包和标准库

    学习使用 errors.Is 和 errors.As 进行显式错误处理、包和模块、文件 I/O 与 JSON、正则表达式、排序以及带缓冲的 I/O。

  5. Goroutine、通道和 Sync

    学习 Goroutine 和通道基础、select 和通道模式、互斥锁与 sync 包、用于取消操作的 context,以及工作池和流水线。

  6. HTTP、REST 和数据库

    使用 net/http 构建 HTTP 服务器和客户端,使用 Gin 构建 REST API,中间件模式,使用 sqlx 和 pgx 配合 database/sql,GORM 以及 WebSockets。

  7. 测试、工具和部署

    学习表驱动测试和子测试、使用 Cobra 构建命令行应用、使用 Viper 进行配置、使用 slog 进行结构化日志记录,以及多阶段 Docker 构建。

  8. 高级 Go

    学习带类型参数和约束的泛型、基准测试和 pprof 性能分析、使用 Protocol Buffers 的 gRPC、反射以及内存模型。

工作原理

一次学习如何进行

每节课程都是一段简短的阅读内容,后面紧接着是可运行的代码,让理解和实践在同一次学习中完成。

  1. 阅读一节简短课程

    打开一门课程,花几分钟完成一节课。课程使用通俗易懂的语言讲解理论,并配有一个小示例,例如第一课中的 package main 和 fmt.Println 程序。

  2. 在真实 Go toolchain 上运行

    编辑器会将你的程序发送给 Go runner 并显示输出。gofmt、go vet 和 race detector 也以同样的方式运行,因此你点击运行时需要连接网络;如果程序崩溃,应用会用通俗易懂的语言解释错误。

  3. 从另一个角度练习

    学完一个主题后,完成测验、解决每日 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+,因此其中的任何内容都没有年龄限制。

开始使用

今天就编写你的第一个 goroutine

在 iOS 和 Android 上免费开始使用,支持 22 种语言。

App Store — 免费下载Google Play — 免费下载
最近审核日期 · 由 CoddyKit 发布 · 隐私政策
可在 iOS 和 Android 上使用。