使用 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中文网其他相关文章!