猿问

接口转换:接口{}为零,不是布尔

我对Go比较陌生。


我正在对现有项目进行更改。我需要检索可能存在于HTTP请求正文中的元素值并弹出它。


var returnValues = body.Params["returnValues"].(bool)

delete(body.Params, "returnValues")

我在第一行遇到错误。


接口转换:接口 {} 为零,而不是布尔


样品体:


{

"Params": {

    "returnValues": true

    }

}


守着一只汪
浏览 88回答 1
1回答

汪汪一只猫

始终,如果您访问接口映射或默认 nil 类型并使用该映射执行操作,请确保该键的值在使用之前存在于映射中。如果映射中不存在该值,它将返回 nil 和具有 nil 引用的 panic。r, ok := body.Params["returnValues"]    if !ok {        // returnValues not present in Params map. Handle the scenario        // and don't continue below     }    var returnValues = r.(bool)    delete(body.Params, "returnValues")此外,如果您不确定要访问的变量类型,请使用类型断言并查看您的类型是否正常。然后,如果它是空的,那么它也为类型断言返回 false。returnValues, ok := body.Params["returnValues"].(bool)    if !ok {        // returnValues may not present in Params map. or it is not an         // boolean type, handle scenario here    }    delete(body.Params, "returnValues")
随时随地看视频慕课网APP

相关分类

Go
我要回答