golang - 关于方法绑定的一个问题

查看:111
本文介绍了golang - 关于方法绑定的一个问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

上面代码中 func Increase绑定在了 *TZ类型上,那么为什么主函数里面定义的是个TZ类型,如果把
var a TZ 换成 var a *TZ
程序运行反而报错,为什么?

解决方案

var a *TZ只是声明了一个指向TZ类型的空指针,如果直接调用a.Increase(100)程序可以编译,但是运行时会报错,因为你在Increase方面里做了dereference的操作:*tz
正确做法应该是和geidoo所说的先赋值:a = new(TZ)

var a *TZ,这个语句本来就是错的。

@geidoo 这个说法不正确,这个声明是合法的,只是题主没有做空指针初始化而已。

这篇关于golang - 关于方法绑定的一个问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆