前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >看了下Go 1.24 版本的新特性,这几个值得关注

看了下Go 1.24 版本的新特性,这几个值得关注

作者头像
KevinYan
发布2025-02-21 15:15:24
发布2025-02-21 15:15:24
10800
代码可运行
举报
文章被收录于专栏:网管叨bi叨网管叨bi叨
运行总次数:0
代码可运行

Go 1.24 版本发布了,今天我们说几个值得重点关注的新特性,主要是:漏洞修复和安全性提高、性能优化、功能增强这三大块。

漏洞修复和安全性提高

漏洞修复主要是对于标准库 os 中文件系统的部分增强了特定目录中执行文件系统操作能力,用于防止目录遍历的漏洞。

新增了os.Root的类型,其提供了在特定目录中执行文件系统操作的能力。整个体系是围绕着这个新类型进行的。

安全性提高方面 Go1.24 在标准库 crypto 将会支持 FIPS140 标准,迈向更进一步的安全合规,这个平时做业务开发大概率用不到,有兴趣的可以了解一下。

性能优化

性能优化中,首先要关注的是 mutex 的性能优化,旧版本中随着 GOMAXPROCS 的增加,mutex 的性能明显下降,原因是当前的mutex实现虽然理论上允许线程睡眠,但实际上导致所有线程都在自旋,带来了不少的性能损耗。新版本中通过给mutex增加标识位减少了不必要的线程切换。

再有一个就是sync.Map 的性能优化了

功能增强

功能增强方面首先是JSON格式化时支持省略零值,看到这了你可能有疑问啦,不是本来就有 omitempty 这个结构体Tag 支持JSON格式化时省略掉空值吗?空值、零值我也被它这个起名搞晕了,看代码吧。

代码语言:javascript
代码运行次数:0
复制

type Person struct {
 Name      string    `json:"name"`
 BirthDate time.Time `json:"birth_date,omitempty"`
}

以前我们给time.Time类型的字段,如果在对象里没有设置,JSON格式化的时候会是下面这个默认值

代码语言:javascript
代码运行次数:0
复制

{"name":"xxx","birth_date":"0001-01-01T00:00:00Z"} 

新特性里给字段的Tag中加上 omitzero

代码语言:javascript
代码运行次数:0
复制

type Person struct {
 Name      string    `json:"name"`
 BirthDate time.Time `json:"birth_date,omitzero"`
}

再做JSON格式化的时候就不会有这个问题了,直接把birth_date这个字段省略掉了。

代码语言:javascript
代码运行次数:0
复制

{"name":"xxx"} 

此外在新版本中还有对泛型的增强,以及strings库中增加了不少新的迭代器方法。

本文中的案例分析转载自煎鱼的公众号,煎鱼因为基础架构工作关注Go新特性较多,大家可以关注一下。

另外如果你是新手光看特性和源码分析大概率是没法开始用Go开发项目的,还需要更多掌握工程化实践才行,这里推荐一下我的专栏《Go项目搭建和整洁开发实战》,专栏已更新完成,还搭配一个从0记录开发过程的实战项目,无论你是新手还是老手都用的上。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网管叨bi叨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 漏洞修复和安全性提高
  • 性能优化
  • 功能增强
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档