檢查 Go 中的介面實作
在 Go 中,使用介面提供了一種為不同資料類型定義通用行為的方法。但是,確定值是否實現特定介面可能很棘手。
型別斷言與型別切換
檢查值是否實作介面的最常用方法是透過型別斷言:
_, ok := val.(Somether)
這個型別斷言驗證值val是否可以轉換為型別某處。如果可以,則將轉換後的值賦給 _ 並將 ok 設為 true;否則,它將 ok 設為 false。
但是,類型斷言假定 val 是一個接口,但情況可能並不總是如此。對於明確類型檢查,您可以使用類型切換方法:
var _ Somether = (*MyType)(nil)
在這個範例中,我們聲明了一個 Somether 類型的未命名變量,並將其設定為 MyType 類型的 nil 指標。此語法可確保編譯器驗證 MyType 是否實作 Somether,如果未實作則觸發編譯錯誤。
已知類型的簡單性
需要注意的是,如果val 的類型已知,編譯器會自動檢查它是否實作 Somether。僅當類型未知時才需要上述明確檢查。
以上是如何檢查一個值是否實作了 Go 中的介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!