Go:interface原理详解-接口由使用者定义,而不是由实现者定义。

Go:interface原理详解-接口由使用者定义,而不是由实现者定义。

接口设计模式的常见疑惑

Golang接口由使用者定义,而不是由实现者定义。开发常见的疑惑:“如果接口是使用者定义的,那使用者怎么知道实现者有没有那个方法?会不会猜错?是不是反而更难用了?”

这个问题是很多人的困惑,而且触及了 Go 接口设计哲学中最容易让人困惑的核心矛盾:

“如果接口是使用者定义的,那使用者怎么知道实现者有没有那个方法?会不会猜错?是不是反而更难用了?”

我们来一层层拆解这个疑问,你会发现:Go 的设计其实不是“让使用者去猜”,而是“让能力自然暴露”

Read more
Go:interface

Go:interface

interface 接口

go:interface{}、断言与类型转换

  • Go的接口更大的作用是声明方法集合,而非类型约束。
  • interface{}可用于向函数传递任意类型的变量,但对于函数内部,该变量仍然为interface{}类型(空接口类型),故必须进行类型断言确认类型后检查才能使用(不能直接隐式转换)。
  • 接口类型向普通类型的转换称为类型断言(运行期确定)。
Read more