Go1.18 新特性:新增好用的 Cut 方法
Posted 脑子进煎鱼了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go1.18 新特性:新增好用的 Cut 方法相关的知识,希望对你有一定的参考价值。
大家好,我是煎鱼。
在各种写业务代码的时候,大家会常常要处理字符串的内容。常见的像是用邮箱登陆账号,如果是:eddycjy@gmail.com,那就得根据 @ 来切割,分别取出前和后,来识别用户名和邮箱地址。
这种需求,在 Go 里写起来方便吗?今天就由煎鱼带大家了解。
的用法,在例子和测试数据之外有 311 个索引调用。排除了一些确实不需要的,剩下 285 个调用。在这些调用中,有 221 次是最好写成 Cut 方法的,能更优雅。
也就是说,有现有的 Go 代码中,有 77% 可以用新增的 Cut 函数写得更清楚,可读性和抽象可以做得更好。
Go 主仓库确实存在如此重复的代码,他认为这也是非常不可思议的!
总结Go1.18 的新特性中,Cut 虽然只是新增了一个方法,看上去无伤大雅。
但类似 Cut 方法的用法,在 Go 的主版本中其实已经被发明了两次。
该新方法的出现,可以同时取代并简化四个不同的标准库函数:Index、IndexByte、IndexRune 和 SplitN 中的绝大部分用法。
由于这些原因,最终将 Cut 添加到标准库中。
你觉得怎么样?:)
参考关注煎鱼,获取业内第一手消息和知识 Go1.18 新特性:高效复制,strings, bytes 标准库新增 Clone API
大家好,我是煎鱼。
Go1.18 过几周(3月份)就要发布了,先前我们已经更新了好几期新版本特性,今天给大家带来一个新的优化类的内容,是与 strings 和 bytes 标准库有关。
是经常需要复制的。需要写以下代码:函数对原始字符串进行复制,得到一份新的 []byte
数据。
*(*string)(unsafe.Pointer(&b))
进行指针操作,实现 byte
到 string
的零内存复制转换。至此,通过非常巧妙地方式解决了背景中的两个问题。大家也不用一直去重复写类似的代码了。
总结一直以来,Go 中的 string 和 slice 因为底层数组指向和扩缩容机制等原因饱受争议,在末尾也给出一些公众号之前介绍过的一些 “坑”,有兴趣的读者可以看看。
本次的 1.18 新方法更新,是有一定功能作用的,在学习上也能够明确的知道 Clone 他的作用和定义,会留个心眼。
你的项目中有类似的代码吗?
往期推荐
关注煎鱼,获取业内第一手消息和知识 以上是关于Go1.18 新特性:新增好用的 Cut 方法的主要内容,如果未能解决你的问题,请参考以下文章