Go 数据结构与算法
Go 只提供切片和映射,其余的都交给你:没有栈、队列或集合类型,container/heap 里的堆在你实现 heap.Interface 之前什么也做不了。在这条路径中,你会用结构体和指针在 Go 里亲手实现每一种数据结构,再用它们做排序、递归和图搜索,最后完成自动评分的面试题。全部免费,在浏览器中学习,大多数课程都有证书。
377 节课284 个挑战702 道测验题
- 适合初学者
AI 辅助编程帮助
动手实践的互动课程
每节课都有语音讲解
检验所学的测验
终点有一张路径证书,沿途还有 23 张
Go 数据结构与算法,循序渐进
每一步都由 Coddy 现有的几门课程组成,每个“开始”按钮都会以 Go 打开课程。还没有 Go 版本的三门课程列在步骤之后。
- 1
- 2
- 3
- 4
- 5
- 6
在实践中学习
编写真实代码、查询数据库、搭建网站、掌握 AI 提示词。我们的互动课程涵盖现代开发者需要的每一项技能。
打造你的连胜
坚持下去,看着自己不断进步!记录每天的编程习惯,用冻结天数保护连胜,每天打卡都能赢取奖励。
12 天连胜
明天再来,保持你的连胜!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
加倍或归零
第 5 天,共 7 天
连胜冻结
2 left
随时随地写代码
随时随地继续你的编程学习旅程!无需配置,无需下载:打开就能写代码。支持 iOS、Android 和 Web,评分高达 4.9 星。
你并不孤单
在全球排行榜上一较高下,邀请好友赢取奖励,为彼此的成就喝彩。和好友一起编程更有趣!
多种学习方式
阅读、收听、自我测验、问 AI,或者查阅学过的任何内容。每节课都配合你的节奏。
变量是一个有名字的容器,用来存储值,方便你在程序后面引用。
在 Python 中,创建变量只需写下名字、一个等号,再写上要存储的值。
值可以随时间变化。给这个名字重新赋值,它就会指向新的值。
获得证书
每完成一门课程都能获得证书。把证书添加到你的 LinkedIn 个人资料和简历中,向雇主展示你的编程能力。
为什么在 Coddy 上用 Go 学数据结构与算法
- Go 留给你的那些数据结构。Go 内置了切片和映射,仅此而已:栈是一个你用
append追加、再重新切片的切片,集合是map[T]struct{},队列类型和树则完全没有。知道如何写出缺少的结构,以及每个切片操作的开销,本身就是掌握 Go 的一部分。 - 结构体和指针,没有任何隐藏。Go 没有类:节点就是一个带有指向下一个节点指针的
struct,方法挂在类型上。链表或树看起来就是它本来的样子,泛型(Go 1.18 起)让它适用于任何元素类型,而垃圾回收意味着你不需要管理malloc或free。 - 几乎整条路径都用 Go。每种数据结构、排序、图算法、递归挑战和面试题包都用 Go 讲授。有三门课用其他语言讲授,列在步骤之后,各附链接:动态规划和 Python 面试系列用 Python,位运算用 C++。从 Go 读位运算很自然,因为 Go 也有 C++ 的
&、|、^、<<和>>,按位取反则写作^x。 - 像面试一样评分。每节课都以一道 Go 挑战结束,由测试用例检查。没通过时,Bugsy 会阅读你的代码,引导你找到修复方法,而不是直接给出答案。大多数课程提供免费证书,每张证书都可以通过专属 URL 验证。
关于用 Go 学数据结构与算法的常见问题
Go 适合学习数据结构与算法吗?
container/list 和 container/heap,其他结构都要你自己写,而在学习路径上,这正是目的所在。如今大量云基础设施都用 Go 编写,包括 Docker 和 Kubernetes,这让它自然成为后端岗位的面试语言。Go 的哪些类型和包对应哪些数据结构?
append 和重新切片也可以当作栈;映射是哈希表,map[T]struct{} 是惯用的集合写法;container/list 是双向链表;container/heap 可以在任何实现了 heap.Interface 的类型上运行二叉堆。Go 没有队列类型、树、字典树或图,这些要你在第一步和第二步中自己实现。Go 的 container/heap 是怎么工作的?
container/heap 是怎么工作的?heap.Interface:来自 sort.Interface 的 Len、Less 和 Swap,再加上只负责在切片末尾追加和删除元素的 Push 和 Pop。然后调用包函数 heap.Push 和 heap.Pop,而不是你自己的方法,由它们完成上浮和下沉,保持堆的顺序。在你亲手写过一个堆之前,这套写法读起来很别扭,而第二步正是让你写堆的地方。为什么每次遍历 Go 的 map,顺序都不一样?
因为 Go 故意随机化了 map 的迭代顺序,这样就没有程序会依赖它。在任何语言中,哈希表都没有有意义的顺序,Go 只是确保你注意到这一点。当顺序很重要时,比如测试要比较的输出,就把键收集到一个切片里再排序,或者在 map 旁边维护一个切片。
这条路径中哪些课程不是用 Go 讲授的?
&^,即“与非”,它会把左操作数中、右操作数为 1 的每一位清零。开始这条路径前需要先会 Go 吗?
至少要了解结构体、指针、切片、映射和方法;泛型会有帮助,也可以边学边掌握。如果这些对你来说还很陌生,可以先学 Coddy 免费的 Go 课程,学完后再从这条路径继续。
完成数据结构与算法路径能获得证书吗?
能。完成每一步,你就能获得整条数据结构与算法路径的一张免费证书。证书会列出你沿途完成的每门课程,并链接到每门课程各自的证书,任何人都能核实上面列出的每项技能。你可以把它添加到 LinkedIn 个人资料。这是 Coddy 颁发的结业证书,不是经过认证的学历资格。