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