在Go 中轉換為類型別名
問題:
問題:在範例程式碼片段中在範例程式碼中,第一個類型斷言透過顯式指定函數簽章來成功。然而,第二個斷言嘗試轉換為型別別名 someFuncy,會出現恐慌。為什麼會這樣,有沒有辦法轉換為更長的函數簽名?
說明:與這裡涉及類型轉換的誤解相反, Go 只提供類型斷言和類型轉換。重點是在提供的程式碼片段中使用的類型斷言。
型別斷言和轉換之間的關鍵差異在於用於比較的標準。在轉換中,例如 int 和 MyInt 的範例,會考慮基礎型別。然而,對於類型斷言,僅考慮確切的類型。 詳細說明,在 a 的類型為 int 的範例中,斷言 a.(MyInt) 失敗,因為 int 與 MyInt 不同,即使兩者共享相同的底層類型。
tl;dr:型別斷言檢查確切的型別標識,這表示像 someFuncy 這樣的型別別名與 func(int) bool 不同。因此,第二次轉換失敗。
獎勵:程式碼片段中用於驗證類型標識的程式碼僅供參考,展示了斷言中涉及的直接比較過程。以上是為什麼在 Go 中轉換為型別別名時型別斷言失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!