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中文網其他相關文章!