面试题答案
一键面试-
代码执行逻辑及输出结果:
- 首先声明了一个空接口
data
和一个int
类型变量num
,并给num
赋值为10
,然后将num
赋值给data
。 - 接着声明了另一个空接口
result
,通过类型断言data.(int)
判断data
是否为int
类型,如果是,则将断言得到的值赋给result
。 - 最后判断
result
是否为nil
,因为data
确实是int
类型,所以result
不为nil
,输出结果为:result不为nil
。
- 首先声明了一个空接口
-
判断空接口是否为nil且包含预期类型值的处理方式: 在Go语言中,空接口本身和其包含的值是两个不同的概念。要判断空接口是否为
nil
且包含预期类型值,可以先判断空接口是否为nil
,再进行类型断言。例如:
package main
import "fmt"
func main() {
var data interface{}
// 这里data为nil,未赋值
if data == nil {
fmt.Println("data为nil")
} else if value, ok := data.(int); ok {
fmt.Printf("data为int类型,值为: %d\n", value)
} else {
fmt.Println("data不是int类型")
}
}
在这个示例中,先判断 data
是否为 nil
,如果不为 nil
再进行类型断言,这样就可以同时判断空接口是否为 nil
且包含预期类型值。