如何确定interface {}值的“真实”类型?

我没有找到使用interface{}类型的好资源。例如

package main

import "fmt"

func weirdFunc(i int) interface{} {

if i == 0 {

return "zero"

}

return i

}

func main() {

var i = 5

var w = weirdFunc(5)

// this example works!

if tmp, ok := w.(int); ok {

i += tmp

}

fmt.Println("i =", i)

}

您知道使用Go’s的很好的介绍interface{}吗?

具体问题:

  • 如何获得w的“真实”类型?
  • 有什么办法来获取类型的字符串表示形式吗?
  • 有什么方法可以使用类型的字符串表示形式来转换值?

回答:

您的示例确实有用。这是一个简化的版本。

package main

import "fmt"

func weird(i int) interface{} {

if i < 0 {

return "negative"

}

return i

}

func main() {

var i = 42

if w, ok := weird(7).(int); ok {

i += w

}

if w, ok := weird(-100).(int); ok {

i += w

}

fmt.Println("i =", i)

}

Output:

i = 49

它使用类型断言。

以上是 如何确定interface {}值的“真实”类型? 的全部内容, 来源链接: utcz.com/qa/398309.html

回到顶部