不能在赋值中使用 (type interface {}) 作为 int 类型:需要类型断言

我有一个具有以下定义的函数:


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



拉风的咖菲猫
浏览 115回答 1
1回答

holdtom

类型断言不会影响您断言的对象。相反,它返回存储在接口中的值以及成功布尔值。这意味着您需要保存此返回值并使用它。在您的情况下,将您的类型断言更改为以下内容:if res, ok := input[0].(int); ok {    tree.Val = res}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go