登录
首页 >  Golang >  Go问答

接口为空:interface{} 为 nil,而不是布尔值

来源:stackoverflow

时间:2024-03-05 13:30:26 324浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《接口为空:interface{} 为 nil,而不是布尔值》,涉及到,有需要的可以收藏一下

问题内容

我对 go 还比较陌生。

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

var returnvalues = body.params["returnvalues"].(bool)
delete(body.params, "returnvalues")

我在第一行遇到错误。

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

正文示例:

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

正确答案


如果您访问接口映射或默认 nil 类型并使用该映射执行操作,请在使用之前确保键的值存在于映射中。如果映射中不存在该值,它将返回 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,那么它也会为类型断言返回 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")

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>