使用 Go 的多功能介面{}類型時,必須駕馭其固有的靈活性。為了有效利用介面{},我們深入研究了您有趣的問題:
類型切換來救援:
switch v := w.(type) { case int: fmt.Println("Type: integer") case string: fmt.Println("Type: string") }
利用TypeName:
fmt.Println(reflect.TypeOf(w).Name())
帶有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中文網其他相關文章!