首頁 > 後端開發 > Golang > Go 的型別斷言 `.(data_type)` 如何從介面值擷取特定型別?

Go 的型別斷言 `.(data_type)` 如何從介面值擷取特定型別?

Susan Sarandon
發布: 2024-12-24 01:36:10
原創
701 人瀏覽過

How Does Go's Type Assertion `.(data_type)` Extract Specific Types from Interface Values?

Go 中的型別斷言:揭秘.(data_type) 方法**

在Go 中,.( data_type ),稱為類型斷言,允許從介面值檢索特定類型。正如“Effective Go”中所述,它涉及“從中提取指定顯式類型的值。”

在提供的程式碼中,reflect.TypeOf(b) 返回“interface{}”,因為b 已被指派字串類型的介面值“silly”。但是,reflect.TypeOf(b.(string)) 傳回“string”,因為類型斷言明確指出 b 包含字串值。

類型斷言在運行時用於從介面中提取特定類型。它們與類型轉換的不同之處在於,它們不會建立值的新副本,而是存取基礎值的類型。

對於 b.(string),斷言傳回一個字串值。這允許特定於字串的操作,例如切片或檢查其長度。此外,您可以透過指派無型別布林值來測試型別斷言是否成功:

s, ok := b.(string) // s is of type string
if !ok {
    // b did not contain a value of type string!
}
登入後複製

為了進一步澄清,型別斷言不會「告訴 Go b 是字串」。相反,它們嘗試在運行時從 b 中提取字串值,如果 b 包含不同的類型,則會導致恐慌(除非分配了可選的布林值)。斷言的結果值將具有指定的資料類型,授予對其特定操作和屬性的存取權限。

以上是Go 的型別斷言 `.(data_type)` 如何從介面值擷取特定型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板