我有一个具有以下定义的函数:type TreeNode struct { Val int Left *TreeNode Right *TreeNode}func BuildTree(input []interface{}) *TreeNode { // ... newNode := new(TreeNode) newNode.Val = input[0] // here caused the error // ...}我试图做类型断言:if _, ok := input[0].(int); ok { tree.Val = input[0]}但仍然给我同样的错误输入是一个像[1,2,3,4] or的切片[1, nil, 2, 3, nil, 4],nil表示它是一个空节点,我不使用 input[]int,因为可能有一些节点的值是0
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
类型断言不会影响您断言的对象。相反,它返回存储在接口中的值以及成功布尔值。
这意味着您需要保存此返回值并使用它。在您的情况下,将您的类型断言更改为以下内容:
if res, ok := input[0].(int); ok {
tree.Val = res
}
- 1 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消