首頁 > 後端開發 > Golang > 如何確定 Go 的「interface{}」的底層類型?

如何確定 Go 的「interface{}」的底層類型?

Mary-Kate Olsen
發布: 2024-12-04 10:39:11
原創
1316 人瀏覽過

How Can I Determine the Underlying Type of Go's `interface{}`?

揭示介面{}的真實本質:類型決定綜合指南

使用 Go 的多功能介面{}類型時,必須駕馭其固有的靈活性。為了有效利用介面{},我們深入研究了您有趣的問題:

1.揭開w 的「真實」類型:

類型切換來救援:

switch v := w.(type) {
  case int:
    fmt.Println("Type: integer")
  case string:
    fmt.Println("Type: string")
}
登入後複製

2。提取類型的字串表示形式:

利用TypeName:

fmt.Println(reflect.TypeOf(w).Name())
登入後複製

3.使用類型的字串表示形式轉換值:

帶有TypeName的類型斷言:

typeName := reflect.TypeOf(w).Name()
if typeName == "int" {
  value := w.(int)
} else if typeName == "string" {
  value := w.(string)
}
登入後複製

在您的具體示例中,您可以獲得“真實”類型使用類型開關的w:

switch w := weirdFunc(5).(type) {
  case int:
    fmt.Println("w is an integer")
  case string:
    fmt.Println("w is a string")
}
登入後複製

或者,您可以利用Reflect 套件來檢索輸入名稱本身:

typeName := reflect.TypeOf(w).Name()
fmt.Println("w's type name:", typeName)
登入後複製

以上是如何確定 Go 的「interface{}」的底層類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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