type A ... func (a A)X(){} func (a *A)Y(){} type IX interface{ X() } type IY interface{ Y() } a := A{} b := &a c := &b a.X() // ok b.X() // ok c.X() // error a.Y() // ok b.Y() // ok c.Y() // ok var ix IX ix = a // ok ix = b // ok ix = c // error var iy IY iy = a // error iy = b // ok iy = c // error var jx IX jx = ix // ok jx = &ix // error
原文地址:http://my.oschina.net/u/593413/blog/292698