Go 中的動態型別轉換
在 Go 中,將介面的值指派給型別變數需要了解變數的型別。但是,如果事先未知類型怎麼辦?
傳統的轉換方法涉及到硬編碼的類型轉換,例如:
var intAge = interfaceAge.(int)
為了解決類型未知的場景,一些開發者可能會提出以下建議:
var x = getType() var someTypeAge = interfaceAge.(x)
但是,這在Go 中是不可行的。該語言是靜態類型的,這意味著變數類型在編譯時確定。
替代方法:型別切換
要動態決定介面的型別{},請輸入可以用切換:
var t interface{} t = functionOfSomeType() switch t := t.(type) { default: fmt.Printf("unexpected type %T", t) // %T prints the type of t case bool: fmt.Printf("boolean %t\n", t) // t has type bool case int: fmt.Printf("integer %d\n", t) // t has type int case *bool: fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool case *int: fmt.Printf("pointer to integer %d\n", *t) // t has type *int }
這種方法允許動態識別介面的類型{}以及後續的特定類型處理。
以上是如何在 Go 中對未知型別執行動態型別轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!