首頁 > 後端開發 > Golang > 如何在 Go 中對未知型別執行動態型別轉換?

如何在 Go 中對未知型別執行動態型別轉換?

Mary-Kate Olsen
發布: 2024-12-07 03:53:08
原創
657 人瀏覽過

How Can I Perform Dynamic Type Casting in Go with Unknown Types?

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

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