要说问题,先看错误提示。
你这个我初步看,错误提示应该在 p = ip上。
在你的代码里,实现 interface phone的是 *iphone 。
所以,所有对interface的调用,本质都是 (&p).call()。只不过go里自动帮你处理了指针的问题。
但是,对于interface变量赋值就完全不是这么回事了。
赋值里是没有,也不可能有指针的自动处理的。
所以,你真正应该改的是
ip:=iphone{} 改为 ip:=&iphone{}
要说问题,先看错误提示。
你这个我初步看,错误提示应该在 p = ip上。
在你的代码里,实现 interface phone的是 *iphone 。
所以,所有对interface的调用,本质都是 (&p).call()。只不过go里自动帮你处理了指针的问题。
但是,对于interface变量赋值就完全不是这么回事了。
赋值里是没有,也不可能有指针的自动处理的。
所以,你真正应该改的是
ip:=iphone{} 改为 ip:=&iphone{}