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

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

為什么編譯器在這個實例中抱怨一個未使用的變量(當它被 fmt.Fprintf 使用時)?

為什么編譯器在這個實例中抱怨一個未使用的變量(當它被 fmt.Fprintf 使用時)?

Go
MYYA 2023-05-08 15:04:04
我有一段簡單的代碼,我想將切片的元素轉換為 json,然后將它們打印到我的 http.responseWriter。for _, element := range customers {     result, _ := json.Marshal(element)     fmt.Fprintf(w, string(result)) }但是,當我編譯它時,出現錯誤“已聲明但未使用的結果”。如果我添加一個簡單的行:_ = result然后一切都可以編譯并正常工作。為什么編譯器會抱怨這種用法,在 go 中正確的做法是什么?感謝任何見解,到目前為止,我的搜索似乎表明對 Fprintf 的調用應該算作一次使用。
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

有問題的代碼不會導致發布的錯誤,為了證明,請在Go Playground上檢查它。

這個錯誤通常是(并且 op 確認在這種情況下也是如此)是由于在塊外有一個同名的局部變量,并且在使用短變量聲明時,它會隱藏該變量。

可以使用以下代碼重現此錯誤:

var result []byte


customers := []int{}

w := os.Stdout


for _, element := range customers {

? ? result, _ := json.Marshal(element)

? ? fmt.Fprintf(w, string(result))

}

嘗試編譯并運行它,我們得到錯誤(在Go Playground上嘗試):


prog.go:10:6: result declared and not used

如果打算使用現有變量(在這種情況下不會創建新變量),解決方案是使用簡單的賦值而不是簡短的變量聲明,或者如果不打算使用外部變量,則使用不同的變量名稱,現有變量(但是外部變量當然要被刪除或使用)。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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