7 go
我在中间件函数中有这段代码:
params := r.URL.Query()
tok := params["x-huru-api-token"][0];
if tok == nil {
tok := r.Header.Get("x-huru-api-token")
}
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
有人知道那是什么吗?
该值nil不是 a 的有效值string。如果您想在缺失值和空值上回退到标头,请使用以下代码:
params := r.URL.Query()
tok := params.Get("x-huru-api-token")
if tok == "" {
tok = r.Header.Get("x-huru-api-token")
}
Run Code Online (Sandbox Code Playgroud)
如果您只想在缺少查询参数时回退到标头,请使用以下命令:
params := r.URL.Query()
var tok string
if values, ok := params["x-huru-api-token"]; ok && len(values) > 0 {
tok = values[0] // note that tok can be the empty string ""
} else {
tok = r.Header.Get("x-huru-api-token")
}
Run Code Online (Sandbox Code Playgroud)
请注意此答案中的代码与问题中的代码之间的一个区别。该答案使用赋值tok在 if 语句内进行设置。问题中的代码使用简短的变量声明。短变量声明不会编译,因为 if 语句中新声明的变量未被使用。
| 归档时间: |
|
| 查看次数: |
14900 次 |
| 最近记录: |