接口转换:interface{} 为 nil,不是 bool

interface conversion: interface{} is nil, not bool

我对 Go 比较陌生。

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

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

我在第一行遇到错误。

interface conversion: interface {} is nil, not bool

样本主体:

{
"Params": {
    "returnValues": true
    }
}

总是,如果您访问接口映射或默认 nil 类型并使用该映射执行操作,请确保键的值在使用之前存在于映射中。如果映射中不存在该值,它将 return nil 并使用 nil 引用恐慌。

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")

另外,如果您不确定要访问的变量类型,请使用类型断言并查看您的类型是否正确。然后,如果它为 null,那么它对于类型断言也是 return 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")