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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-04 10:39:11977瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn