錯誤訊息:
cannot use &f (type *Bar) as type StringerGetter in argument to Printer: *Bar does not implement StringerGetter (wrong type for GetStringer method) have GetStringer() *Foo want GetStringer() fmt.Stringer
在Go 中,介面方法依賴於精確的類型匹配。這意味著返回介面的函數在介面及其實作中必須具有相同的確切類型。如果它們不匹配,Go 將產生編譯時錯誤。
在這種情況下,您的介面 StringerGetter 指定了一個傳回 fmt.Stringer 的方法 GetStringer()。但是,具體類型 Bar 的 GetStringer() 實作傳回指向 Foo 結構的指針,該結構不是 fmt.Stringer。這種不匹配會導致編譯時錯誤。
解決方案:
精確實作介面:
將特定類型包裝在新類型中:
使用斷言:
重要注意事項:
以上是以下是一些標題選項,涉及錯誤的'為什麼”和'如何”: 強調'為什麼” * 為什麼我的 Go 程式碼會拋出'cannot use...as type St”的詳細內容。更多資訊請關注PHP中文網其他相關文章!