Go: Panic: Runtime Error: Invalid Memory Address or Nil Pointer Dereference
執行 Go Go程式時,您可能會遇到恐慌,以下錯誤訊息:
panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x38 pc=0x26df]
此錯誤通常表示您的程式處理方式有問題記憶體位址或指標。讓我們分解一下可能的原因:
問題:錯誤處理不正確
在提供的Go 程式碼中,getBody 函數在處理來自HTTP 的回應時存在問題client:
if err != nil { return nil, err } ... if err != nil { return nil, err }
第一個if err != nil檢查在存取回應之前發生body:
if err != nil { return nil, err } res, err := client.Do(req)
但是,用於關閉回應正文 (res.Body) 的 defer 語句會立即執行,甚至在錯誤檢查之前也是如此。這可能會導致過早嘗試關閉主體並導致“無效記憶體位址”錯誤。
解決方案:
要解決此問題,請移動錯誤在訪問和關閉響應正文之前進行檢查:
res, err := client.Do(req) if err != nil { return nil, err } defer res.Body.Close()
通過這樣做,程式碼可以在處理回應之前正確檢查任何潛在錯誤body,防止「無效記憶體位址」錯誤。
以上是恐慌:無效的記憶體位址或 Nil 指標取消引用:如何修復不正確的錯誤處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!