Tony Bai · Go 语言第一课
Tony Bai
资深架构师,tonybai.com 博主
21492 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 59 讲
开篇词 (1讲)
结束语 (1讲)
Tony Bai · Go 语言第一课
15
15
1.0x
00:00/00:00
登录|注册

大咖助阵|叶剑峰:Go语言中常用的那些代码优化点

解决不同问题的方法
工作和开源项目经验
使用大括号控制作用域
类初始化使用Option写法
slice初始化时补全cap
pkg/error替代官方error库
命令行工具参数解析
变量不泄漏
逻辑封装
NewFoo函数实现
Foo结构体和WithXXX方法
使用可变参数控制执行
可选参数作为函数类型
参数过多导致函数难以使用
类字段变化导致New方法不适用
汇编码对比
提升程序运行性能
避免growslice操作
使用make关键字初始化
直接使用[]int初始化
封装fundamental结构实现Formatter
利用fmt包的Formatter接口
使用fmt.Printf("%+v", err)
替换import
错误堆栈信息
嵌套信息
错误描述性信息
经验总结
代码规范和优化
四个Go语言常用写法
示例
代码组织
限制err变量作用域
解决 := 和 = 混淆问题
示例
Option写法
传统New方法问题
示例
性能优化
方法对比
原理
示例
附加堆栈
附加信息
总结
巧用大括号控制变量作用域
初始化类时使用Option写法
在初始化slice时尽量补全cap
使用pkg/errors而不是官方error库
Go语言代码优化点总结

该思维导图由 AI 生成,仅供参考

你好,我是轩脉刃,是《手把手带你写一个 Web 框架》专栏的作者。
很高兴应编辑邀请,为 Tony Bai 老师的专栏写一篇加餐文章。Tony Bai 大佬是我很早在微博关注的一名 Go 先行者。他的《Gopher Daily》也是我经常学习阅读的 Go 语言资料之一。很高兴看到 Tony Bai 老师在极客时间也开了一个专栏,将他的经验分享出来。
这篇加餐,我主要想和你聊一聊 Go 语言中常用的一些代码优化点。在 Go 语言中,如果你不断地在一线写代码,一定多多少少都会有一些写代码的套路和经验。这些套路和经验可以帮助你在实际工作中遇到类似问题时,更成竹在胸。
所以这里,我想和你分享一下我个人在开发过程中看到和使用到的一些常用的代码优化点,希望能给你日常编码带来一些帮助。

第一点:使用 pkg/errors 而不是官方 error 库

其实我们可以思考一下,我们在一个项目中使用错误机制,最核心的几个需求是什么?我觉得主要是这两点:
附加信息:我们希望错误出现的时候能附带一些描述性的错误信息,甚至这些信息是可以嵌套的;
附加堆栈:我们希望错误不仅仅打印出错误信息,也能打印出这个错误的堆栈信息,让我们可以知道出错的具体代码。
在 Go 语言的演进过程中,error 传递的信息太少一直是被诟病的一点。使用官方的 error 库,我们只能打印一条简单的错误信息,而没有更多的信息辅助快速定位错误。所以,我推荐你在应用层使用 github.com/pkg/errors 来替换官方的 error 库。因为使用 pkg/errors,我们不仅能传递出标准库 error 的错误信息,还能传递出抛出 error 的堆栈信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Go语言代码优化是开发中的重要环节。本文介绍了一些常用的优化点,包括使用github.com/pkg/errors替换官方error库,以及在初始化slice时补全cap以提升程序性能。此外,文章还介绍了巧用Option写法初始化类和利用大括号控制变量作用域的技巧。这些优化点通过具体的代码示例和对比展示了实际应用和效果。通过本文的总结,读者可以快速了解Go语言中常用的代码优化点,为日常编码带来一些帮助。这些优化点是作者在工作和阅读开源项目中总结的经验,对于解决不同问题都具有实际应用的价值。文章内容丰富,对于Go语言开发者来说是一份宝贵的优化手册。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Tony Bai · Go 语言第一课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • __PlasticMan
    白老师,边长参数与函数选项模式的结合一般用什么方式?比如一个函数要传入printf风格的参数,还要添加默认参数

    作者回复: 在第21讲 https://time.geekbang.org/column/article/460666 中有说明。

    2024-01-25归属地:四川
    2
  • 谢小路
    Option 写法,在设计模式中有个专用的名词称呼 —— 函数选项模式。
    2022-04-24
    16
  • Darren
    这里面的With方式,感觉和设计模式中的构建者模式很类似
    2022-01-19
    2
    6
  • 青鸟飞鱼
    这总结太棒了,有个疑问,最后一个,既然那么多大括号,可以拆分成几个函数?这样子会不会更好点?
    2022-01-19
    3
    6
  • helloxiaomin
    手动点赞,很实用👍
    2022-01-19
    5
  • lesserror
    学到了,谢谢叶老师。
    2022-02-02
    1
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部