我有一个简单的函数,它接受一个变量获取它的类型并将其处理到一个开关中,但是我得到一个错误:i is not a type
我的代码如下所示:
var whatAmI = func(i, interface{}) { // error is here
switch t := i.(type) {
case bool:
fmt.Println("I'm a bool!")
case int:
fmt.Println("I'm an int!")
default:
fmt.Println("Don't know type %T\n", t)
}
}
whatAmI(true)
whatAmI(1)
whatAmI("hey")
我在这里误解了什么吗?
最佳答案
从函数签名中删除逗号,它将起作用。试试吧 here 。
package main
import (
"fmt"
)
func main() {
var whatAmI = func(i interface{}) { // error is here
switch t := i.(type) {
case bool:
fmt.Println("I'm a bool!")
case int:
fmt.Println("I'm an int!")
default:
fmt.Printf("Don't know type %T\n", t)
}
}
whatAmI(true)
whatAmI(1)
whatAmI("hey")
}
此外,您错误地格式化了 default case 打印语句,因此我对其进行了更改以符合您的预期行为。