首页 >后端开发 >Golang >如何确定 Go 的'interface{}”的底层类型?

如何确定 Go 的'interface{}”的底层类型?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-04 10:39:11978浏览

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