联系

改善Go语言编程质量的50个有效实践

内容简介

课程亮点:

高屋建瓴 – Go 设计哲学与编程思想先⾏。

深入浅出 – 原理深⼊,例⼦简明,讲解透彻。

技能落地 – 总结 50 个高效 Go 程序设计技巧。

图⽂并茂 – 大量图表辅助学习,轻松更兼趣味。

知识全⾯ – 覆盖高级面试知识点,求职更⾃信。

改善Go语言编程质量的50个有效实践

课程简介:

每一个开发者的职业生涯中,都会遇到这样的困惑 —— 到底如何才能高效地写出高质量的代码呢?

当然,Go 语言开发者也不例外。

作为一名近 10 年的 Go 语言开发者,Tony Bai 老师给出了自己的方法论:

① 像 Go 团队那样去编程 —— 也就是跟着 Go 语言的设计思维去编程,事半功倍;

② 代码符合语言惯例(idiomatic)—— 清楚 Go 语言的惯用法,写标准、规范的代码。

基于这个思路,课程首先将带领⼤家回顾 Go 语言的演化历史,⼀起了解并深刻体会 Go 大牛们设计 Go 语言时的所思所想,与大牛们实现思维上的共鸣,理清那些看似随意、实则经过深思熟虑的设计的背后的付出。

接下来,将基于笔者对 Go 核心团队、Go 社区高质量代码的分析归纳,从代码风格、基础语法、函数 / 方法、接口、并发、错误处理、测试调试、标准库、工程实践等多个⽅⾯给出改善 Go 代码质量的有效实践。

本课程由 Tony Bai 老师浓缩自己的成长经验汇总而成,为各位正在经历技术与职业困惑的开发者们提供一种进阶的思维与方法。其中,由老师总结并亲身实践出来的 50 条高阶 Go 开发技巧,更能帮助大家减少试错成本,实现技能的真实、快速提升。

学完课程,你将拥有和 Go 大牛们⼀样的 Go 编程思维,能写出更符合 Go 惯例风格的⾼质量 Go 代码,从众多 Go 入门选⼿中脱颖而出,从新手到高手!

讲师简介

Tony Bai,Go 语言技术专家,GopherChina 大会讲师,OSCHINA 源创会技术讲师,《七周七语言》译者之一,慕课网《Kubernetes 实战:高可用集群搭建、配置、运维与应用》作者,开源拥趸。目前正在国内⼀大型软件公司带领团队使用 Go 语⾔构建移动运营商的 5G 消息平台,这个平台将处理来自全国各地几十万个 5G chatbot 程序每天发送的几十亿条 5G 消息请求。

专栏模块

本专栏共分 10 个模块 (篇),50 个小节。

模块 1:设计哲学篇

本专栏的开篇和总起。和读者⼀起穿越时空,回顾历史,详细了解 Go 语⾔的诞⽣、演化以及今天的发展。归纳总结 Go 语⾔的设计哲学和原⽣编程思维,让读者可以站在语⾔设计者的⾼度理解 Go 语⾔与众不同的设计。

模块 2:代码风格篇

每种编程语⾔都有⾃⼰惯⽤的代码⻛格,⽽遵循语⾔惯⽤⻛格是⾼质量 Go 代码的必要条件。本篇详细介绍了得到公认且⼴泛使⽤的 Go ⼯程的结构布局、代码⻛格标准、标识符命名惯例以及变量声明形式等。

模块 3:基础语法篇

本模块详述在基础语法层⾯⾼质量 Go 代码的惯用法和有效实践,涵盖⽆类型常量的作⽤、定义 Go 的 “枚举常量”、“零值可⽤” 类型的意义、切⽚原理以及其⾼效的原因、Go 包导⼊路径的真正含义等。

模块 4:函数与方法篇

函数和⽅法是 Go 程序的基本组成单元。本模块聚焦于函数与⽅法的设计与实现,涵盖 init 函数的使⽤、跻身 “一等公导” 行列的函数有何不同、Go 方法的本质等帮助读者深⼊理解它们的内容。

模块 5:接⼝篇

接⼝是 Go 语⾔中的 “魔法师”。本模块将聚焦接⼝,涵盖接⼝的设计惯例、使⽤接⼝类型的注意事项以及接⼝类型对代码可测试性的影响等。

模块 6:并发编程篇

Go 以其轻量级的并发模型⽽闻名。本模块将详细介绍 Go 基本执⾏单元 – goroutine 的调度原理、Go 并发模型以及常⻅并发模式、Go 支持并发的原生类型 – channel 的惯⽤使⽤模式等内容。

模块 7:错误处理篇

Go 语⾔⼗分重视错误处理,它有着相对保守的设计和显式处理错误的惯例。本模块将涵盖 Go 错误处理的哲学以及在这套哲学下⼀些常见错误处理问题的优秀实践⽅案。

模块 8:测试与调试篇

Go ⾃带强⼤且为⼈所称道的⼯具链,本模块将详细介绍 Go 在单元测试、性能测试以及代码调试方面的最佳实践⽅案。

模块 9:标准库篇

Go 拥有功能强⼤且质量上乘的标准库,多数情况我们仅使⽤标准库所提供的功能⽽不借助第三方库就可实现应用的大部分功能,这⼤幅降低学习成本以及代码依赖的管理成本。本模块将详细说明高频使用的标准库包,如 net/http、strings、bytes、time 等的正确使用方式,以及 reflect 包、cgo 在使用时的注意事项。

模块 10:工程实践篇

本模块将涵盖我们使用 Go 语言做软件项目过程中很大可能会遇到的⼀些⼯程问题的解决⽅法,包括:使用 module 进⾏ Go 包依赖管理、Go 应⽤容器镜像、Go 相关⼯具使用以及 Go 语言的避 “坑” 指南。

资源目录

——/计算机教程/01MOOC/专栏课/19-改善Go语言编程质量的50个有效实践/

01 Go 语言的前生今世慕课专栏.html 32.89kb

01 Go 语言的前生今世慕课专栏.pdf 360.15kb

02 Go语言的设计哲学之一简单慕课专栏.html 17.73kb

02 Go语言的设计哲学之一简单慕课专栏.pdf 389.88kb

03 Go 语言的设计哲学之二组合慕课专栏.html 14.22kb

03 Go 语言的设计哲学之二组合慕课专栏.pdf 181.12kb

04 Go语言的设计哲学之三并发慕课专栏.html 23.90kb

04 Go语言的设计哲学之三并发慕课专栏.pdf 391.13kb

05 Go 语言的设计哲学之四面向工程慕课专栏.html 20.63kb

05 Go 语言的设计哲学之四面向工程慕课专栏.pdf 276.76kb

06 参考 Go 项目布局设计你的项目结构慕课专栏.html 19.90kb

06 参考 Go 项目布局设计你的项目结构慕课专栏.pdf 318.37kb

07 gofmtGo代码风格的唯一标准慕课专栏.html 29.17kb

07 gofmtGo代码风格的唯一标准慕课专栏.pdf 1.69M

08 Go 标识符的命名惯例慕课专栏.html 30.33kb

08 Go 标识符的命名惯例慕课专栏.pdf 1.91M

09 变量声明形式尽量保持一致慕课专栏.html 44.59kb

09 变量声明形式尽量保持一致慕课专栏.pdf 245.74kb

10 无类型常量让代码更简化慕课专栏.html 29.85kb

10 无类型常量让代码更简化慕课专栏.pdf 234.75kb

11 Go“枚举常量”的惯用实现方法慕课专栏.html 25.28kb

11 Go“枚举常量”的惯用实现方法慕课专栏.pdf 214.28kb

12 定义“零值可用”的类型慕课专栏.html 28.33kb

12 定义“零值可用”的类型慕课专栏.pdf 181.83kb

13 用复合字面值作初值构造器慕课专栏.html 43.65kb

13 用复合字面值作初值构造器慕课专栏.pdf 179.63kb

14 深入理解和高效运用切片(slice)慕课专栏.html 48.28kb

14 深入理解和高效运用切片(slice)慕课专栏.pdf 1.40M

15 注意Go 字符串是原生类型慕课专栏.html 103.22kb

15 注意Go 字符串是原生类型慕课专栏.pdf 293.63kb

16 理解包导入路径的含义慕课专栏.html 50.74kb

16 理解包导入路径的含义慕课专栏.pdf 243.04kb

17 init 函数的妙用慕课专栏.html 40.72kb

17 init 函数的妙用慕课专栏.pdf 309.42kb

18 Go 函数是“一等公民”慕课专栏.html 94.08kb

18 Go 函数是“一等公民”慕课专栏.pdf 273.42kb

19 defer 让你的代码更清晰慕课专栏.html 84.73kb

19 defer 让你的代码更清晰慕课专栏.pdf 339.56kb

20 Go 方法的本质慕课专栏.html 44.85kb

20 Go 方法的本质慕课专栏.pdf 197.36kb

21 方法集合决定接口实现慕课专栏.html 72.00kb

21 方法集合决定接口实现慕课专栏.pdf 245.24kb

22 变长参数函数的妙用慕课专栏.html 86.85kb

22 变长参数函数的妙用慕课专栏.pdf 297.19kb

23 定义小接口是 Go 的惯例慕课专栏.html 23.04kb

23 定义小接口是 Go 的惯例慕课专栏.pdf 814.85kb

24 不要在函数参数中使用空接口(interface{})慕课专栏.html 26.38kb

24 不要在函数参数中使用空接口(interface{})慕课专栏.pdf 183.28kb

25 要提高代码可测试性,请使用接口慕课专栏.html 41.04kb

25 要提高代码可测试性,请使用接口慕课专栏.pdf 318.21kb

26 面试必考!掌握 goroutine 的调度原理慕课专栏.html 69.09kb

26 面试必考!掌握 goroutine 的调度原理慕课专栏.pdf 450.58kb

27 Go 并发模型和常见并发模式慕课专栏.html 144.69kb

27 Go 并发模型和常见并发模式慕课专栏.pdf 1.09M

28 Go channel 的常见使用模式慕课专栏.html 104.09kb

28 Go channel 的常见使用模式慕课专栏.pdf 489.74kb

29 sync 包的正确使用姿势慕课专栏.html 91.28kb

29 sync 包的正确使用姿势慕课专栏.pdf 1.62M

30 别笑!这就是 Go 的错误处理哲学慕课专栏.html 60.25kb

30 别笑!这就是 Go 的错误处理哲学慕课专栏.pdf 271.68kb

31 if err != nil 重复太多可以这么办.html 69.14kb

31 if err != nil 重复太多可以这么办.pdf 604.53kb

32 不要让 panic 掺和到正常错误处理中慕课专栏.html 69.77kb

32 不要让 panic 掺和到正常错误处理中慕课专栏.pdf 310.28kb

33 一文告诉你测试包的包名要不要带“_test”后缀.html 30.69kb

33 一文告诉你测试包的包名要不要带“_test”后缀.pdf 497.82kb

34 Go 单元测试惯例表驱动慕课专栏.html 49.25kb

34 Go 单元测试惯例表驱动慕课专栏.pdf 220.73kb

35 Go 惯例将测试依赖的外部数据文件放在 testdata 下面慕课专栏.html 48.95kb

35 Go 惯例将测试依赖的外部数据文件放在 testdata 下面慕课专栏.pdf 1.76M

36 为被测对象建立性能基准慕课专栏.html 87.13kb

36 为被测对象建立性能基准慕课专栏.pdf 334.20kb

37 掌握 Go 代码性能剖析神器pprof慕课专栏.html 117.45kb

37 掌握 Go 代码性能剖析神器pprof慕课专栏.pdf 1.81M

38 掌握 Go 代码调试利器delve慕课专栏.html 62.82kb

38 掌握 Go 代码调试利器delve慕课专栏.pdf 817.49kb

39 一文告诉你如何在 Go 中实现 HTTPS 通信慕课专栏.html 94.84kb

39 一文告诉你如何在 Go 中实现 HTTPS 通信慕课专栏.pdf 1.33M

40 告别乱码!GO语言字符集编码方案间转换慕课专栏.html 67.01kb

40 告别乱码!GO语言字符集编码方案间转换慕课专栏.pdf 1.03M

41 像极!bytes包和strings包的那些相似操作慕课专栏.html 156.36kb

41 像极!bytes包和strings包的那些相似操作慕课专栏.pdf 473.32kb

42 time包,你用对了吗慕课专栏.html 151.53kb

42 time包,你用对了吗慕课专栏.pdf 881.27kb

43 小心被kill!不要忽略对系统信号的处理慕课专栏.html 66.15kb

43 小心被kill!不要忽略对系统信号的处理慕课专栏.pdf 327.72kb

44 慎用reflect包提供的反射能力慕课专栏.html 103.69kb

44 慎用reflect包提供的反射能力慕课专栏.pdf 388.36kb

45 与C互操作不是免费的!疑问了解cgo的使用成本慕课专栏.html 124.18kb

45 与C互操作不是免费的!疑问了解cgo的使用成本慕课专栏.pdf 672.67kb

46 与时俱进!使用module管理依赖包慕课专栏.html 137.25kb

46 与时俱进!使用module管理依赖包慕课专栏.pdf 598.04kb

47 小即是美?构建最小Go程序容器镜像慕课专栏.html 43.67kb

47 小即是美?构建最小Go程序容器镜像慕课专栏.pdf 580.71kb

48 让你的Go包拥有个性化的导入路径慕课专栏.html 47.76kb

48 让你的Go包拥有个性化的导入路径慕课专栏.pdf 258.69kb

49 利其器!Go常用工具大检阅慕课专栏.html 190.50kb

49 利其器!Go常用工具大检阅慕课专栏.pdf 1.14M

50 未雨绸缪!Go语言常见“坑”大汇慕课专栏.html 232.46kb

50 未雨绸缪!Go语言常见“坑”大汇慕课专栏.pdf 619.04kb

慕课网.html 1.94kb

慕课网.pdf 17.24kb

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注