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


本文摘自php中文网,作者V,侵删。

代码实例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

}

报错信息如下:

1

2

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)是个值,且这个值也没有赋给任何变量,所以符号“&”是获取不到地址的。

阅读剩余部分

相关阅读 >>

golang pprof 性能分析工具

golang 通用链接池

模块三 go语言实战与应用-测试的基本规则和流程(上)

golang如何定义一个二维数组

embed小技巧-动态文件更新

golang怎么定时任务

golang 自然语言处理工具(gohanlp)

手撸golang 行为型设计模式 委派模式

go基础及语法(二)

【golana语言社区】window应该开发之--cmd杀进程

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...