请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

cannot call pointer method postOrder on myTreeNode

回答1 浏览119 2020-10-09 11:05:38

这个编译错误老师可详细再解释下吗?
视频里面没有听太懂,为什么必须返回一个变量才可以取到函数地址?
另外和指针接收和值接收又有什么关系呢?(修改成值接收就不会报错)

添加回答

已采纳回答

这个就是编译器的限制。

我们这个postOrder需要一个指针接收者。如果是修改后的写成left.postOrder(),left是一个变量,它会自动取left的地址,作为接收者。但是我们不写变量,myTreeNode{...}.postOrder(),它就取不了myTreeNode{...}的地址。这只是一个编译器的限制。

指针接收者和值接收者,区别与指针参数与值参数一样。只是编译器在处理left.postOrder()等的时候,会帮我们自动把left取地址,然后再调用postOrder。

2020-10-10 19:12:21

Google资深工程师深度讲解Go语言 由浅入深打通Go学习路线

难度中级
时长24小时20分钟
人数4418
好评度99.8%

语法+分布式爬虫实战 为转型工程师量身打造,让你彻底掌握go语言

讲师

ccmouse 全栈工程师

讲师曾任职于Google,担任高级软件工程师,Tech Leader,拥有十余年后端开发经验,精通C ,Java,Go,分布式系统开发等,精通分布式系统设计,从Go语言早期就开始关注和使用Go语言,对Go语言背后的实现及设计理念有独到的见解。

意见反馈 帮助中心 APP下载
官方微信