首頁  >  文章  >  後端開發  >  為什麼在 Go 中存取匿名結構時會得到「沒有方法的介面」?

為什麼在 Go 中存取匿名結構時會得到「沒有方法的介面」?

Patricia Arquette
Patricia Arquette原創
2024-11-04 04:23:01831瀏覽

Why do I get

理解Go 中的「沒有方法的介面」

在您的程式碼中,您遇到了錯誤「type interface {} is interface with no方法」當嘗試從傳遞給函數的匿名結構存取欄位時。要瞭解此錯誤,必須掌握 Go 中介面的概念。

Go 中的介面是一種類型,它定義了具體類型必須實作的一組方法。但是,在您的情況下,您使用的介面是由介面 {} 表示的「空介面」。空接口沒有任何方法,可以保存任何類型的值,使其成為通用類型。

存取匿名結構欄位

存取以下欄位傳遞給 NewJob 的匿名結構,您需要將其斷言為相容類型,然後才能存取其欄位。類型斷言允許您將空介面轉換為特定的特定類型。

修正的程式碼

<code class="go">id := v.(struct{Id int}).Id</code>

在此修正的程式碼中,我們鍵入斷言 v 介面具有 Id 欄位的結構。這允許我們訪問 Id 字段,並且程式將按預期運行。

請記住,應謹慎使用類型斷言,因為如果類型斷言失敗,可能會導致運行時錯誤。

以上是為什麼在 Go 中存取匿名結構時會得到「沒有方法的介面」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn