21CTO导读:Go v 1.27扩展了功能,包括泛型开始支持方法。
Go(也称Golang)语言于2009年首次发布。这个编程语言的维护者们于周三(8月19日)发布了最新版本v1.27 ,其中在泛型方面取得了相当大的进步。
泛型特性允许开发者编写将数据类型视为变量的逻辑,从而避免为不同的数据类型(整数、字符串、浮点等)重写(或复制粘贴)分开的方法。
一位资深开发者惊叹,这“简直太北极了”。
泛型与泛型结构体
Go 是在 2022 年发布的 1.18 版本中引入了函数和自定义数据类型的泛型。
此次更新的 v1.27 版本扩展了泛型,能够支持方法。
我们知道,方法本质上就是绑定到数据类型的函数。这些新的泛型将节省大量输入,特别是对于具备一定编程经验的程序员来说非常有帮助。
例如, Golang 的标准随机数字生成器可以生成 32 位整数 (int32)、64 位整数 (int64) 或 CPU 需要的任何整数大小 (int)。
而在 v1.27 引入泛型之前,开发者必须为大众想要使用的数值类型单独编写方法。
除了泛型之外,v1.27还允许开发者更轻松地使用结构体(struct)。
结构体是一种复合对象,将不同的数据类型组合在一个对象中。现在,开发者可以直接为写入或嵌入的字段设置值,而消耗指定所有中间步骤。这在处理深度蚀刻的结构体时可以节省时间。
此版本还增强了从函数中推断数据类型的能力,从而吸引开发者显式指定数据类型。由此,在将泛型函数传递给片面量、通道传送或类型转换式时,都需要显式指定类型参数。
省一次击键,却伤了脑子
Go 语言不断发展,逐渐成为一种能够处理构建新的 TypeScript 语言,处理如此复杂的任务的编程语言,但有人质疑它在这个过程中是否失去了平易近人的魅力。
丰富的类型和其他这些省时特性让忙碌的Go程序员们松了一口气,他们已经厌倦了输入大量相同的代码。但这些语言快捷的方式也让屏幕上的代码变得更加抽象,这本身也带来了一定的认知负担。
Go 语言的创造者是他们——Google 工程师 Rob Pike、Robert Griesemer 和 Ken Thompson 在创造 Go 语言时,优先考虑便利性而不是可写性。
Google产品经理Cameron Balahan和谷歌云首席布道师Chad Serot在本月初的一篇博客中写道,设计师们意识到:“开发者花在阅读现有代码上的时间显然多于他们编写代码的时间”。
有人认为,泛型和其他节省击键次数的措施会产生更多的启发性,这可能会让试图理解代码运行方式的人感到困惑。
一位名叫 ThePrimeagen(Michael Paulson)的著名技术评论员(也是前 Netflix 工程师)抱怨说,通用代码将“使每个代码库都完全不同”。
“你将直接进入代码库,却不知道它们是如何运作的。你必须完全经历层层抽象,学习全新的表达方式,这和其他语言没什么区别,只是少了那些便利而已。”
他说,Go 语言的价值在于它的简洁性,采用更高级别的结构来增强 C++ 或 Rust 的编辑器。
VictoriaMetrics 创始人 Aliaksandr Valialkin 在 2024 年的一篇文章中指出:“在大多数实际的 Go 代码中,泛型并不是必需的。”这些新特性的缺点提出,它们使得“仅通过阅读代码来理解其运行机制变得更加困难”。
对于人工智能代理来说,Golang 的易读性不仅仅是个人偏好;它对于保持目标显然至关重要。
谷歌的技术算法这样写道:“当代码生成人工智能后,软件工程的主要瓶颈将完全从编写速度转移到审查、验证和维护的严谨性上。”语言越复杂,人工智能理解起来就越费力。
泛型之类的技巧可以帮助经验丰富的程序员语法节省编码时间,当智能体编写所有代码时,它还有价值吗?如果为多种数据类型编写一个随机数字生成器方法只需要一两秒,而且更容易解决,那么学习泛型是否会增加智能体的认知负担,否则会导致上下文记忆丧失。
新版的Go语言让开发者感到轻松,同时也给其他角色带来了甜蜜的负担。
作者:洛逸
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。