go泛型的缺点
“劣势”:go是带垃圾回收的编程语言,因此不管go的stop the world的时间有多么短,延迟有多么小,依然属于这类语言,这就天然与c,cpp,rust间划清了界线。虽然go初衷是成为系统级编程语言,虽然go的性能可以满足99%的场合的需要,但不能否认的是在一些性能超级敏感的场合,选择go依然要慎重。go的另外一个“劣势”就是能玩的花样太少,崇尚一个事情只有一个或少数几种写法。这不符合某些开发人员炫技的心理需求。于是就被诟病为是资质平平的程序员才会去用的语言。go 1.18将加入泛型(类型参数),这算是
go泛型什么时候出
go泛型2022年出。Golang团队认为在类型系统和运行时的复杂性花费太大,还没找到可以和这个复杂性相抵的良好设计。内置的map和slice其实都有泛型的味道,加上可以用interface{}来构造容器,可以达到泛型的效果。所以目前为止还没有直接的支持泛型。Java语言泛型:在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换。而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
因势而变,因时而动,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang泛型(generic)的使用EP15
事实上,泛型是Go lang1.18的一大亮点,但为何我们要在后期才深入探讨它呢?用比喻来说,就像给一年级的小学生讲解王勃的《滕王阁序》,他们能有多大几率理解作者的抱负和失意情绪?恐怕很难。的确,若没有对Go lang的强类型语法一定的了解,就难以理解泛型这种与静态语言概念相悖的特性。什么是泛型?泛型,顾名思义,就是通用的类型。简单来说,它是在静态类型语言中使用动态类型语言特性的方法。比如,一个函数能实现两个字符串的合并,参数声明了字符串,也就不支持其他数据类型。但如果需要两个整数求和的函数呢?那就需要再写一个类似的函数,这样就影响了代码的逻辑复用性。泛型的意义在于,在相同的逻辑下,可以针对不同的数据类型进行泛用。在Go lang中,泛型使用 [] 来声明类型范围。如果是多个数据类型,可以使用|分隔。这里定义了一个泛型变量v,可以是整数、浮点或字符串。注意,由于参数类型未定,所以返回值也必须是泛型类型
驳狗屎文 "我为什么放弃Go语言
此篇文章流传甚广, 其实里面没啥干货, 而且里面很多观点是有问题的. 这个文章在 golang-china 很早就讨论过了.最近因为 Rust 1.0 和 1.1 的发布, 导致这个文章又出来毒害读者.所以写了这篇反驳文章, 指出其中的问题.有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论。但是我有足够详实的客观的论据,用以支撑这个看似主观的结论。文末附有本文更新日志。确实是非常主观的结论, 因为里面有不少有问题的观点(用来忽悠Go小白还行).第0节:我的Go语言经历先说说我的经历吧,以避免被无缘无故地当作Go语言的低级黑。2009年底,Go语言(golang)第一个公开版本发布,笼罩着“Google公司制造”的光环,吸引了许多慕名而来的尝鲜者,我(Liigo)也身居其中,笼统的看了一些Go语言的资料,学习了基础的教程,因对其语法中的分号和花括号不满,很快就遗忘掉了,没拿它当一回事