我的观点:
Go的隐式接口Duck Typing确实不是新技术, 但是在主流静态编程语言中支持Duck Typing应该是很少的(不清楚目前是否只有Go语言支持).
静态类型和动态类型虽然没有绝对的好和不好, 但是每个都是有自己的优势的, 没有哪一个可以包办一切. 而Go是试图结合静态类型和动态类型(interface)各自的优势.
那么就从头谈起:什么是接口 。其实通俗的讲,接口就是一个协议,规定了一组成员,例如.NET里的ICollection接口:
public interface ICollection {
int Count { get; }
object SyncRoot { get; }
bool IsSynchronized { get; }
void CopyTo(Array array, int index);
}
这就是一个协议的全部了吗go语言为什么不看好?事实并非如此,其实接口还规定了每个行为的“特征” 。打个比方,这个接口的Count除了需要返回集合内元素的数目以外,还隐含了它需要在O(1)时间内返回这个要求 。这样一个使用了ICollection接口的方法才能放心地使用Count属性来获取集合大小,才能在知道这些特征的情况下选用正确的算法来编写程序,而不用担心带来性能问题,这才能实现所谓的“面向接口编程” 。当然这种“特征”并不但指“性能”上的,例如Count还包含了例如“不修改集合内容”这种看似十分自然的隐藏要求 , 这都是ICollection协议的一部分 。
go语言为什么不看好的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于go语言排名为什么不高、go语言为什么不看好的信息别忘了在本站进行查找喔 。
- redis缓存失效怎么办 redis缓存数据不一致
- mysql下到了c盘 mysql怎么不存到c盘
- 你为什么使用抖音 你为什么使用mysql
- redis哨兵模式数据不一致 redis为什么叫哨兵
- redis不适用场景 redis处理场景识别
- mongodb数据丢失原因 为什么mongodb数据库一直在加载中
- mongodb查询字符串字段包含 mongodb查询字段不为空
- mysql5.7打不开一闪而过 mysql显示屏闪烁
- redis为什么是cp redis为啥是kv的
- redis连不上可能的原因 连接redis突然报错
