首頁 >後端開發 >Golang >為什麼在 Go 中轉換為型別別名時型別斷言失敗?

為什麼在 Go 中轉換為型別別名時型別斷言失敗?

Barbara Streisand
Barbara Streisand原創
2024-12-22 18:35:11664瀏覽

Why Does Type Assertion Fail When Casting to a Type Alias in Go?

在Go 中轉換為類型別名

問題:

問題:

在範例程式碼片段中在範例程式碼中,第一個類型斷言透過顯式指定函數簽章來成功。然而,第二個斷言嘗試轉換為型別別名 someFuncy,會出現恐慌。為什麼會這樣,有沒有辦法轉換為更長的函數簽名?

說明:

與這裡涉及類型轉換的誤解相反, Go 只提供類型斷言和類型轉換。重點是在提供的程式碼片段中使用的類型斷言。

型別斷言和轉換之間的關鍵差異在於用於比較的標準。在轉換中,例如 int 和 MyInt 的範例,會考慮基礎型別。然而,對於類型斷言,僅考慮確切的類型。 詳細說明,在 a 的類型為 int 的範例中,斷言 a.(MyInt) 失敗,因為 int 與 MyInt 不同,即使兩者共享相同的底層類型。

tl;dr:

型別斷言檢查確切的型別標識,這表示像 someFuncy 這樣的型別別名與 func(int) bool 不同。因此,第二次轉換失敗。

獎勵:程式碼片段中用於驗證類型標識的程式碼僅供參考,展示了斷言中涉及的直接比較過程。

以上是為什麼在 Go 中轉換為型別別名時型別斷言失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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