2 回答
TA贡献1811条经验 获得超6个赞
该值nil不是 a 的有效值string。如果您想回退到缺少值和空值的标题,请使用以下代码:
params := r.URL.Query()
tok := params.Get("x-huru-api-token")
if tok == "" {
tok = r.Header.Get("x-huru-api-token")
}
如果您只想在缺少查询参数时回退到标头,请使用以下内容:
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")
}
请注意此答案中的代码与问题中的一个区别。tok这个答案在 if 语句中使用赋值来设置。问题中的代码使用了简短的变量声明。短变量声明将无法编译,因为未使用 if 语句中新声明的变量。
TA贡献1798条经验 获得超7个赞
String 不是 Go 中的指针类型,因此它不能是nil。字符串的零值为空字符串 ("")。
正确的代码应该是:
params := r.URL.Query()
tok := params["x-huru-api-token"][0];
if tok == "" {
tok := r.Header.Get("x-huru-api-token")
}
- 2 回答
- 0 关注
- 235 浏览
添加回答
举报