TonyBai · Go语言进阶课

TonyBai · Go语言进阶课 / 从熟练到精通,实现 Go 语言实战进阶

Tony Bai 资深架构师

  • 课程介绍
  1. 在线阅读:开篇词|从熟练到精通:开启你的Go语言进阶之旅

    带你完成从“Go 熟练工”到“Go 专家”的蜕变。

  2. 01|类型系统:理解Go语言独特设计哲学的关键钥匙

    深入探讨 Go 语言的一个核心基石:类型系统。

  3. 02 | Go兼容性:你的代码能在未来版本运行吗?

    我的 Go 代码,在未来的 Go 版本中还能跑吗?反过来,我用了新特性的代码,能在旧环境编译运行吗?

  4. 03 | 值传递vs指针传递:深入Go数据操作的底层逻辑与性能考量

    不深入理解值与指针的底层机制,你可能只是“知其然”,但在面对性能瓶颈、内存问题或复杂的共享状态时,会“不知其所以然”,难以写出真正高质量的 Go 代码。

  5. 04 | 数组与切片:性能、灵活与陷阱,如何做出最佳选择?

    数组和切片是 Go 数据结构的基础。深刻理解它们的特性、权衡和陷阱,是写出高效、健壮、地道 Go 代码的必经之路。

  6. 05 | 字符串:不只是字节序列,揭秘rune、UTF-8与高效操作

    我们深入探索了 Go 字符串的“二面性”世界,理解了它为何既像字节序列又像字符序列。

  7. 06 | Map:不仅是键值对,掌握哈希表的高效用法与并发陷阱

    Map 功能强大,但理解其特性、遵循最佳实践至关重要。掌握了这些,你就能在 Go 程序中自信、高效、安全地使用 map 了。

  8. 07 | 函数与方法:理解Go面向对象的不同方式,何时选择其一?

    不理解函数与方法的本质区别和适用场景,可能会让你写出不够“地道”的Go代码,甚至在面对接口实现、状态修改、代码组织等问题时做出次优的设计决策。

  9. 08 | 结构体与接口:掌握Go语言组合优于继承的设计哲学

    掌握组合是理解和精通Go语言设计的关键。通过灵活运用结构体和接口进行组合,我们可以构建出简洁、清晰、可维护、易于扩展的Go应用程序。

  10. 09|控制结构:for循环的进化与新语义

    掌握 for 循环的过去、现在与未来,才能更好地驾驭 Go 的控制流。

  11. 10|泛型:超越interface{},哪些场景应该优先考虑泛型?

    为什么以简洁著称的Go语言,会长期“固执”地不引入泛型?这背后有哪些设计上的权衡?Go 1.18最终引入的泛型,究竟解决了 `interface{}` 的哪些核心痛点?这节课,我们就来深入探讨Go泛型的来龙去脉和实践之道。

  12. 11 | Go并发核心:goroutine、channel与Context的最佳实践

    掌握goroutine、channel、select、sync和context的最佳实践,是编写高质量Go并发程序的基石。这节课,就让我们一起开启Go并发进阶之旅,一起驾驭Go的并发之力!

  13. 12 | 垃圾回收:便利≠免费,GC开销分析与优化实践

    仅仅享受GC的便利而不理解其成本,可能会让我们在面对性能问题时束手无策。只有深入分析GC开销的来源,并掌握行之有效的优化实践,才能在便利和性能之间找到最佳平衡点。

  14. 13 | 深入Go底层:驾驭反射(Reflection)与unsafe的双刃剑

    在Go语言简洁、静态类型和内存安全的“舒适区”之下,隐藏着两把威力巨大但也极其危险的“瑞士军刀”:反射(Reflection)和unsafe包。这节课我们来一起探索。

  15. 14 | 项目布局:构建清晰、可维护Go应用的基石

    很多人没有机会从零设计项目结构,或习惯遵循某种“约定俗成”的模板。不理解项目布局背后的设计原则和Go自身的特点,可能会陷入为了结构而结构、过度设计等困境。这节课,我们就深入探讨Go项目布局的设计之道。

  16. 15 | 包设计:如何实践高内聚、低耦合与SOLID原则?

    可以说,Go应用的本质就是一组设计良好、协同工作的包的集合。如何设计出职责清晰、依赖合理、易于维护的包,是衡量Go代码质量的关键,也是我们设计先行模块的核心议题。

  17. 16 | 并发设计:用并发思维构建Go应用的结构骨架

    Go语言的并发特性不仅仅是为了让我们的程序跑得更快,更是一种强大的构造和组织软件的方式。这节课,我们将聚焦于如何运用并发思维来设计Go应用的结构,并重点探讨goroutine的生命周期管理

  18. 17 | 接口设计:发现和定义优雅契约的艺术

    在Go语言的世界里,如果说goroutine和channel赋予了它并发的灵魂,那么接口无疑是其设计哲学的基石,是构建灵活、可维护、可扩展系统的核心武器。这节课,我们就来深入探讨Go接口设计的艺术。

  19. 18|错误处理设计:从显式处理到错误链的最佳实践

    如果你写过Go代码,一定对随处可见的if err != nil印象深刻。这种看似“啰嗦”的方式,恰恰体现了Go对于错误处理的核心哲学。掌握优雅、健壮的错误处理设计,是编写生产级Go应用的关键一环。

  20. 19 | API设计:构建用户喜爱、健壮可靠的公共接口

    现代软件开发很大程度上就是围绕着API进行构建和交互的。本节课将聚焦于如何设计Go包(或模块)对外暴露的公共API,深入探讨Go包API设计的核心原则与实践。

  21. 20 | 实战串讲(设计篇):设计高内聚低耦合的“短链接服务” (上)

    接下来的两节课,我们将通过一个具体的案例——“短链接服务”,来完整地走一遍设计的流程。

  22. 21 | 实战串讲(设计篇):设计高内聚低耦合的“短链接服务” (下)

    这节课,我们将继续完善“短链接服务”的设计,精化核心 Go API,完成错误处理设计,初探并发模型,总结设计蓝图。

  23. 22|应用骨架:从初始化、组件编排到优雅退出的最佳实践(上)

    深刻理解为何应用骨架如此重要。

  24. 23|应用骨架:从初始化、组件编排到优雅退出的最佳实践(下)

    深入拆解一个典型应用骨架的核心组成部分。

  25. 24 | 核心组件:构建健壮Go服务的配置、日志与插件化方案(上)

    这节课,我们先深入配置管理的实践。从基础的配置方式出发,探讨如何整合命令行、环境变量、配置文件乃至远程配置中心等多种来源,实现优先级管理、类型安全访问,并展望配置热加载机制。

  26. 25 | 核心组件:构建健壮Go服务的配置、日志与插件化方案(下)

    这节课,我们接着聚焦日志最佳实践,并探讨插件化架构,帮助你提升构建和维护高质量Go服务的能力。

  27. 26 | 可观测性:Metrics、Logging、Tracing,让你的Go服务不再是黑盒(上)

    传统的、仅靠查看零散的应用日志或依赖基本的系统监控,在面对现代应用的复杂性和对高可用、高性能的要求时,已经捉襟见肘。我们需要一套更系统、更深入的方法来“观测”我们的应用。这节课我们就来聊聊可观测性。

  28. 27|可观测性:Metrics、Logging、Tracing,让你的Go服务不再是黑盒(中)

    这节课我们重点来看Metrics和Logging在Go生态中的主流技术栈和实践。

  29. 28 | 可观测性:Metrics、Logging、Tracing,让你的Go服务不再是黑盒(下)

    这节课,我们继续探讨Tracing,再来聊聊Metrics、Logging和Tracing这三者是如何整合的,可观测性数据采集中常见的Push与Pull模型,以及展望eBPF技术为Go应用可观测性带来的革命性影响。

  30. 29 | 测试进阶:组织、覆盖、Mock与Fuzzing的最佳实践(上)

    在Go工程实践中,编写测试是保障代码质量、提升系统稳定性的基石。接下来的两节课,我们将深入探讨Go测试的进阶技巧与最佳实践。

  31. 30 | 测试进阶:组织、覆盖、Mock与Fuzzing的最佳实践(下)

    这两节课,我们从基础回顾到前沿自动化探索技术,帮你掌握Go测试的进阶“兵器谱”。将它们熟练运用于日常开发,不仅能帮你更早、更有效地发现和修复软件缺陷,更能让你对所构建的Go应用的质量和稳定性充满信心。

  32. 31 | 静态代码分析:在编码阶段发现并修复Go潜在问题

    为进一步提升代码质量,防患于未然,我们引入了——静态代码分析。学完这节课,你将能利用强大的静态分析工具,将许多潜在问题扼杀在摇篮中,显著提升你的Go代码质量、可读性、可维护性和整体的健壮性。

  33. 32 | 部署与升级:拥抱云原生,实现Go应用持续交付(上)

    这节课,我们会学习如何将Go应用容器化,掌握编写高效、安全的Dockerfile的最佳实践,以及优化Go镜像体积的技巧,再了解Docker Compose这个开发利器,学习用它快速搭建和管理包含多个服务的本地Go应用环境。

  34. 33 | 部署与升级:拥抱云原生,实现Go应用持续交付(下)

    这节课,我们先一起入门Kubernetes的核心概念,并重点讨论在K8s中部署Go服务的典型模式,再深入剖析主流的平滑发布策略——滚动更新、蓝绿部署与金丝雀发布,理解它们的原理、优缺点及配合策略。

  35. 34 | 故障诊断:线上问题排查的利器与策略(上)

    当告警的铃声响起,我们如何从纷繁复杂的现象中剥茧抽丝,快速、准确地定位到问题的根源?从这节课开始,我们进入故障诊断的世界。

  36. 35 | 故障诊断:线上问题排查的利器与策略(下)

    这节课,我们继续深入Go应用线上故障诊断的复杂世界,来学习如何诊断具体的并发问题和性能问题。

  37. 36 | 性能调优:定位瓶颈,优化Go程序的系统方法(上)

    在复杂的业务场景和大规模部署下,即便是Go程序,也可能因为不当的编码实践、低效的算法选择,或者对Go运行时特性理解不足而遭遇性能瓶颈。这节课,我们将一起深入Go程序的性能调优之旅。

  38. 37 | 性能调优:定位瓶颈,优化Go程序的系统方法(下)

    有时仅仅知道“哪里热”还不够,我们还需要理解“为什么热”以及“热的过程是怎样的”,特别是对于那些与goroutine调度、GC行为、并发交互时序,或细微的I/O等待相关的复杂性能问题。

  39. 38|AI集成:如何让大模型赋能你的Go应用?

    AI大模型究竟是什么?它为软件开发带来了怎样的新范式?Go语言在这个新的生态中扮演什么角色?最重要的是,我如何才能将这些强大的AI能力,快速、有效地集成到现有或未来的Go应用中呢?

  40. 39 | 实战串讲(工程篇):“短链接服务”的工程化实践(上)

    这节课,作为工程实践篇的上篇,我们将亲自动手,为“短链接服务”搭建起基础的工程框架,并集成一系列关键的工程化组件。

  41. 40 | 实战串讲(工程篇):“短链接服务”的工程化实践(中)

    上节课,我们有了合理的配置管理和高质量的结构化日志,为应用的稳定运行和可运维性打下了坚实的基础。这节课,我们将为应用装上“眼睛”和“耳朵”的另外两个重要部分:Metrics和Tracing,进一步增强其可观测性。

  42. 41|实战串讲(工程篇):“短链接服务”的工程化实践(下)

    作为工程篇的下篇,我们将补齐关键的质量保障、诊断能力和交付准备环节,继续完善“短链接服务”,使其更接近生产标准。

  43. 结束语|技术之路无止境,持续学习与实践

    当你站在这段学习旅程的终点回望,我希望你看到的不仅仅是Go语言的特性和技巧的简单集合,更是一幅关于如何思考、设计、构建并维护高质量、高可用Go应用的、逐渐清晰且日趋完整的系统性蓝图。

  44. 结课测试|来赴一场满分之约!

    为了帮你检验自己的学习成果,我特意准备了一套结课测试题,快来挑战吧!

课程介绍

你将获得 夯实基础,突破语法认知瓶颈 设计先行,奠定高质量代码基础 工程实践,锻造生产级 Go 服务 培养 Go 语言设计思维和工程思维 讲师介绍 主持开发的行业短信网关系统,占据了中国移动三分之一的市场份额; 使用 Go...

你将获得

  • 夯实基础,突破语法认知瓶颈
  • 设计先行,奠定高质量代码基础
  • 工程实践,锻造生产级 Go 服务
  • 培养 Go 语言设计思维和工程思维

讲师介绍

  • 主持开发的行业短信网关系统,占据了中国移动三分之一的市场份额;
  • 使用 Go 开发的 5G 消息网关,在运营商竞标中排名技术分第一;
  • 带领团队使用 Go 语言构建的车云平台产品,已经成功应用于国内外多家知名车企的量产车型。

此外,Tony Bai 老师也一直在做 Go 语言的分享和布道。从 2019 年开始,他坚持不懈地将自己每天阅读到的 Go 社区的优秀技术资料,整理成公开的 Gopher 日报,提供给 Go 语言的关注者。他在 Go 技术博客 tonybai.com、GopherChina 大会上分享的实践经验和思考,深受广大 Go 语言用户的好评,这套课程也是源自 GopherChina 大会的 Go 高级工程师必修课。


课程介绍

我们正处在一个云原生、微服务、分布式系统成为技术基础设施核心的时代。而 Go 语言,凭借其出色的并发性能、简洁的语法、高效的编译部署以及对网络编程的良好支持,已经成为构建这些现代系统的首选语言之一。

如果你学习过 Tony Bai 老师的《Go 语言第一课》,或者通过其他途径掌握了 Go 的基础语法和常用库,但你仍然面临着这样的困惑:

  • 感觉到了瓶颈?写了不少 Go 代码,但总觉得离“精通”还差一口气,想写出更优雅、更高性能的代码却不知从何下手?
  • 设计能力跟不上?面对复杂的业务需求,如何进行合理的项目布局、包设计、接口设计?如何选择合适的并发模型?
  • 工程实践经验不足?知道要测试、要监控、要优化,但具体到 Go 项目,如何搭建可观测性体系?如何进行有效的故障排查和性能调优?如何保证代码质量和线上稳定?

那么这门“Go 语言进阶课”正是为你量身打造的。

课程摒弃了简单罗列知识点的方式,聚焦于 Go 工程师能力提升的三个核心维度,为你精心设计了三大模块。

模块一:夯实基础,突破语法认知瓶颈

这里我们不满足于“知道”,而是追求“理解”。深入类型系统、值与指针、切片与 map 陷阱、接口与组合、context、泛型等核心概念的底层逻辑与设计哲学,让你写出更地道、更健壮的 Go 代码,彻底告别“语法坑”。

模块二:设计先行,奠定高质量代码基础

从宏观的项目布局、包设计,到具体的并发模型选择、接口设计原则,再到实用的错误处理策略和 API 设计规范。这一模块将提升你的软件设计能力,让你能驾驭更复杂的项目。

模块三:工程实践,锻造生产级 Go 服务

聚焦于将 Go 代码变成可靠线上服务的关键环节。如何构建应用骨架(初始化、依赖注入、优雅退出)?如何实现核心组件(配置、日志、插件化)?如何落地可观测性(Metrics、Logging、Tracing)?如何进行高效的故障排查、测试组织、性能调优、云原生部署以及与 AI 大模型集成?这里全是硬核干货。

此外,课程还安排了实战串讲项目,带你将前面学到的知识融会贯通,亲手构建并完善一个真实的 Go 服务。

通过这门课程的学习,你不仅可以掌握 Go 的高级特性和用法,更能建立起 Go 语言的设计思维和工程思维,真正具备驾驭大型 Go 项目、解决复杂工程问题的能力,完成从“Go 熟练工”到“Go 专家”的蜕变。


课程目录


订阅须知