2 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
該值nil不是 a 的有效值string。如果您想回退到缺少值和空值的標(biāo)題,請使用以下代碼:
params := r.URL.Query()
tok := params.Get("x-huru-api-token")
if tok == "" {
tok = r.Header.Get("x-huru-api-token")
}
如果您只想在缺少查詢參數(shù)時(shí)回退到標(biāo)頭,請使用以下內(nèi)容:
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")
}
請注意此答案中的代碼與問題中的一個(gè)區(qū)別。tok這個(gè)答案在 if 語句中使用賦值來設(shè)置。問題中的代碼使用了簡短的變量聲明。短變量聲明將無法編譯,因?yàn)槲词褂?if 語句中新聲明的變量。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
String 不是 Go 中的指針類型,因此它不能是nil。字符串的零值為空字符串 ("")。
正確的代碼應(yīng)該是:
params := r.URL.Query()
tok := params["x-huru-api-token"][0];
if tok == "" {
tok := r.Header.Get("x-huru-api-token")
}
- 2 回答
- 0 關(guān)注
- 295 瀏覽
添加回答
舉報(bào)