我一直在編寫一個測試程序來幫助學習 Go。這樣做時,我遇到了一些我認為編譯器應該檢測到錯誤的情況。我遇到了另一個類似的情況,所以我想我應該問一下為什么這種情況不被視為錯誤。示例情況:if oError = rwfile.WriteLines(asParams, sParamsFilename); oError != nil { fmt.Printf("Error on write to file Params. Error = %s\n", oError)} else { println("Params file write OK")}在上面的示例中,無論是否聲明了變量“oError”,編譯器都不會指示錯誤。如果該行在未聲明變量時包含以下內容(如預期),它也可以工作:if oError := rwfile.WriteLines(asParams, sParamsFilename); oError != nil {如果我聲明變量“oError”,則“:=”不起作用(如預期)?!皉wfile”是我寫的一個包,有問題的函數如下:func WriteLines(asBuff []string, sFilename string) error { // write text file如果我在寫入文件時創建錯誤,并使用“=”而不聲明變量“oError”,則程序正常工作并檢測到非零的“oError”變量。那么,當 oError 未聲明為變量時,為什么上面的“=”不被視為錯誤?Go 版本為 go1.1.2 Windows/386。
2 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
它與實際問題無關,但 `go fmt` 確實可以幫助跟蹤大型程序中的錯誤內容。
此外,遵循樣式指南確實有幫助:使用簡潔的代碼樣式(沒有匈牙利變量名!我花了很長時間才習慣短名稱)和短文件:2Kloc 文件可能太大了。非常值得瀏覽標準庫源代碼,看看好的 Go 代碼是什么樣的
- 2 回答
- 0 關注
- 229 瀏覽
添加回答
舉報
0/150
提交
取消