亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法將 nil 轉換為類型字符串

無法將 nil 轉換為類型字符串

Go
萬千封印 2023-05-22 15:45:49
我在中間件函數中有這段代碼:params := r.URL.Query()tok := params["x-huru-api-token"][0];if tok == nil {    tok := r.Header.Get("x-huru-api-token")}但我收到此錯誤:有人知道那是什么嗎?
查看完整描述

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 語句中新聲明的變量。


查看完整回答
反對 回復 2023-05-22
?
元芳怎么了

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")

}


查看完整回答
反對 回復 2023-05-22
  • 2 回答
  • 0 關注
  • 285 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號