问题出现的环境背景及自己尝试过哪些方法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了
- 1 回答
- 0 关注
- 200 浏览
添加回答
举报
0/150
提交
取消
