我认为您对界面的理解不够充分。Interface {}本身就是一种类型。它由两部分组成:基础类型和基础值。
Golang没有重载。Golang类型系统按名称匹配,并且要求类型一致
因此,当您定义将接口类型作为参数的函数时:
foo(interface {})
这与采用int类型的函数不同:
foo(int)
因此,您应该将以下行更改为
func (s S) foo(i interface{}) { fmt.Println(i)}
或对此更好:
type I interface { foo()}type S struct { I int}func (s S) foo() { fmt.Println(s.I)}func main() { var i I = S{2} i.foo()}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)