您在这里寻找的概念是类型系统中的
差异
。某些类型的系统和类型支持 协方差 和 逆变 ,但围棋的接口不。
虽然
int可以将an
传递给Expect的函数
interface{},但关于func(int)和不能说相同
func(interface{}),因为接口的行为不协变。如果type
x实现接口
ii,则并不意味着
func(x)实现
func(ii)。
您可以做的是传递给
func(int)Expect的函数
interface{},因此您可以做package mainimport "fmt"func foo(x interface{}) { fmt.Println("foo", x)}func add2(n int) int { return n + 2}func main() { foo(add2)}由于
func(int)int没有 实现
interface{}。除了答案顶部的Wikipedia链接之外,此文章还提供了有关各种差异编程语言支持的更多详细信息。它主要使用其他语言,因为方差最好用支持继承的语言来证明。



