为了账号安全,请及时绑定邮箱和手机立即绑定

关于Go语言报错的问题?

关于Go语言报错的问题?

慕哥6287543 2018-07-15 17:02:56
问题出现的环境背景及自己尝试过哪些方法Val是TreeNode结构体的一个成员变量stack.Peek()返回值是(bool, interface{})相关代码_, _top := stack.Peek()// 如果用这两行代码就会报错// _top = _top.(*TreeNode)// res = append(res, _top.Val)// 以下一行代码没有报错res = append(res, _top.(*TreeNode).Val)// 以下两行代码也没有报错_top2 := _top.(*TreeNode) res = append(res, _top2.Val)你期待的结果是什么?实际看到的错误信息又是什么?为什么注释掉的两行代码,我先执行了类型转换,然后去取Val的时候会报错呢?报错信息是type interface {} is interface with no methods
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

类型错了,
_, _top := stack.Peek() 出来的_top 是interface{} 类型的,没问题
_top = _top.(TreeNode) 语法上来说没有问题, 但是记住_top是inteface{}类型, _top.(TreeNode)
等于没做.

所以到下面一行
res = append(res, _top.Val)
_top是一个interface{}, 怎么会有Val成员变量

把那两行代码改成
_tmp := _top.(*TreeNode)
res = append(res, _tmp.Val)
那就ok了


查看完整回答
反对 回复 2018-07-20
  • 1 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号