关于golang中无法获取地址问题的解析

互联网 19-12-24

代码实例如下:

func main() {     var a Integer = 1     var b Integer = 1     sum := a.Add(b)     fmt.Println(sum)      var i interface{} = a     sum = i.(Integer).Add(b) // 报错     fmt.Println(sum) }  type Integer int  func (a *Integer) Add(b Integer) Integer {     return  *a + b }
test\testVar.go:16:19: cannot call pointer method on i.(Integer) test\testVar.go:16:19: cannot take the address of i.(Integer)

出现这种情况是因为Add方法需要一个Integer指针类型的接收器,而我们传过去的i.(Integer)是个值,且这个值也没有赋给任何变量,所以符号“&”是获取不到地址的。

正确的方式是将i.(Integer)赋值给一个变量,或者把方法接收器改成普通类型。

代码示例如下:

   var i interface{} = a     c := i.(Integer)     sum = c.Add(b)     fmt.Println(sum)

或者

func (a Integer) Add(b Integer) Integer {     return  a + b }

相关文章教程推荐:golang教程

以上就是关于golang中无法获取地址问题的解析的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 解析
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:golang调用cmd命令时如何隐藏dos窗口

相关资讯