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

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

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

Go
拉风的咖菲猫 2022-07-04 16:51:23
我有一个具有以下定义的函数: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

}


查看完整回答
反对 回复 2022-07-04
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信