【发布时间】:2021-09-04 19:32:25
【问题描述】:
我对 Go 比较陌生。
我正在对现有项目进行更改。 我需要检索可能存在于 HTTP 请求正文中的元素值并将其弹出。
var returnValues = body.Params["returnValues"].(bool)
delete(body.Params, "returnValues")
我在第一行遇到错误。
接口转换:interface {} 为 nil,而不是 bool
样本主体:
{
"Params": {
"returnValues": true
}
}
【问题讨论】:
-
您的代码中是否有任何 json 结构或要解码的内容?您在哪里将您的请求正文解组为 Go 对象?
-
这意味着
body.Params映射没有returnValues键,或者它有它但它是零。你如何构造body.Params? -
“我需要检索一个可能存在在 HTTP 请求正文中的元素的值并将其弹出。” -- 你是收到错误,因为它不存在。你应该永远做
var v = x.(bool),除非你确定x包含一个bool值。如果在某些情况下它可能不是bool,那么您的程序会在遇到这些情况时崩溃。如果您想避免崩溃,请使用“comma ok”成语,例如var v, ok = x.(bool).