关于golang中无法获取地址问题的解析
时间:2019-12-24 16:46
代码实例如下: 报错信息如下: 出现这种情况是因为Add方法需要一个Integer指针类型的接收器,而我们传过去的 正确的方式是将 代码示例如下: 或者 相关文章教程推荐:golang教程 以上就是关于golang中无法获取地址问题的解析的详细内容,更多请关注gxlsystem.com其它相关文章!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)
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
}