该值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 stringif 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 语句中新声明的变量。