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 關注
- 285 瀏覽
添加回答
舉報