首頁 > 後端開發 > Golang > 為什麼 Go 中 Nil 介面到指標的轉換失敗?

為什麼 Go 中 Nil 介面到指標的轉換失敗?

Barbara Streisand
發布: 2024-11-30 13:08:11
原創
451 人瀏覽過

Why Does a Nil Interface to Pointer Conversion Fail in Go?

Go 中的 Nil 介面到指標轉換

在 Go 中,介面類型可以保存實現它的不同特定類型的值。但是,嘗試將 nil 介面轉換為特定類型的指標可能會導致錯誤「介面轉換:介面為 nil,而不是 *」。發生此錯誤的原因是類型斷言(用於將介面轉換為特定類型)需要非零介面值。

要理解此行為,請考慮問題中的程式碼片段:

當嘗試使用類型斷言p.(*Node) 將p 的值指派給n 時,就會出現問題。此斷言失敗,因為 p 變數為 nil,表示它不包含任何具體值。

或者,以下表達式:

成功,因為它將 n 變數明確設定為*Node 類型的 nil 指標。這是可能的,因為介面值由一對(值,動態類型)組成,並且將介面值設為nil將導致一對(nil,nil)。

要處理nil介面值,你可以明確地檢查它:

或者,你可以使用「comma-ok」形式的類型斷言:

總之,嘗試使用類型斷言將nil 介面轉換為特定類型的指標將會失敗,但明確將其設為nil 將會成功。若要處理 nil 介面值,可以使用明確檢查或類型斷言的「comma-ok」形式。

以上是為什麼 Go 中 Nil 介面到指標的轉換失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板