我有一段簡單的代碼,我想將切片的元素轉換為 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
如果打算使用現有變量(在這種情況下不會創建新變量),解決方案是使用簡單的賦值而不是簡短的變量聲明,或者如果不打算使用外部變量,則使用不同的變量名稱,現有變量(但是外部變量當然要被刪除或使用)。
- 1 回答
- 0 關注
- 159 瀏覽
添加回答
舉報
0/150
提交
取消