要说问题,先看错误提示。

你这个我初步看,错误提示应该在 p = ip上。

在你的代码里,实现 interface phone的是 *iphone 。

所以,所有对interface的调用,本质都是 (&p).call()。只不过go里自动帮你处理了指针的问题。

但是,对于interface变量赋值就完全不是这么回事了。

赋值里是没有,也不可能有指针的自动处理的。

所以,你真正应该改的是

ip:=iphone{} 改为 ip:=&iphone{}