说到底, 这个是因为对泛型支持的不完备导致的.
Go语言是没啥NB的特性, 但是Go的特性和工具组合在一起就是好用.
这就是Go语言NB的地方.
1.11 没有泛型支持,常见数据类型接口丑陋
没有泛型的话 , List、Set、Tree这些常见的基础性数据类型的接口就只能很丑陋:放进去的对象是一个具体的类型 , 取出来之后成了无类型的interface{}(可以视为所有类型的基础类型) , 还得强制类型转换之后才能继续使用,令人无语 。Go语言缺少min、max这类函数,求数值绝对值的函数abs只接收/返回双精度小数类型,排序接口只能借助sort.Interface无奈的回避了被比较对象的类型,等等等等,都是没有泛型导致的结果 。没有泛型,接口很难优雅起来 。Go开发者没有明确拒绝泛型,只是说还没有找到很好的方法实现泛型(能不能学学已经开源的语言呀) 。现实是,Go 1.0已经定型,泛型还没有,那些丑陋的接口为了保持向后兼容必须长期存在着 。
Go有自己的哲学, 如果能有和目前哲学不冲突的泛型实现, 他们是不会反对的.
如果只是简单学学(或者叫抄袭)已经开源的语言的语法, 那是C++的设计风格(或者说C++从来都是这样设计的, 有什么特性就抄什么), 导致了各种脑裂的编程风格.
编译时泛型和运行时泛型可能是无法完全兼容的, 看这个例子:
type AdderT interface {
Add(a, b T) T
}
go语言不够灵活的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言为何不受待见、go语言不够灵活的信息别忘了在本站进行查找喔 。
推荐阅读
- 电脑直播哪里看数据分析,查看直播数据的app
- python读取日志最后十行,python读取日志统计ip
- 如何脱离知名电商,如何规避电商风险
- 好玩射击类游戏可开镜,开放射击类手游
- 用户留言java代码 java留言板功能齐全源码
- 苹果手机为什么总是突然卡,苹果手机突然老卡什么原因
- pp助手ios11更换存档,pp助手怎么把备份好的移到新手机
- mysql行级锁怎么用 mysql如何加行级锁
- python函数参数值引用,python的plot函数参数