golang 的接口指针为什么不能调用方法?

type I interface {
    name()
}
type S struct{}

func (*S) name() {
}
func TestInterface(t *testing.T) {
    var value I = &S{}
    value.name() //可以调用

    var point = &value
    point.name() //不能调用
}
阅读 7.1k
2 个回答

你是抽象了一个interface. 需要其他的数据结构来实现I 下面的方法。并不是直接调用I下面的方法。
你那有调用value.name 应该会报错的。

(*point).name()

这样就行。

&符号的意思是对变量取地址,如:变量a的地址是&a
*符号的意思是对指针取值,如:*&a,就是a变量所在地址的值,当然也就是a的值了
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题