为何用`interface{}` 表示任意类型?

为何用interface{} 表示任意类型?

为何不用interface表示任意类型?

阅读 1.5k
2 个回答

interface{} 里面没有任何函数声明。

所以,所有的结构体,所有的Type,包括Primitive Type都隐式地实现这个interface {}。

这个interface{}可以作为任何结构体,Type,Primitive Type的父类(从OOP的角度来看)。

所以interface{}可以当做java的java.lang.Object,
C的void

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

interface 定义是 interface { methods } ,methods 是类型需要实现的方法集。

如果对方法集没有任何要求,就可以匹配任何类型,methods 为空,就变成了 interface{} 。这样,任意类型的 interface{} 的定义于其它所有的 interface 是一致的。

如果另外定义 interface 表示任意类型,则需要对语法进行额外的修改。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题