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中文網其他相關文章!