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