面试题答案
一键面试package main
import (
"fmt"
)
func processData(data interface{}) interface{} {
switch v := data.(type) {
case int:
return v * v
case float32:
return v * v
case float64:
return v * v
case string:
return len(v)
default:
return nil
}
}
你可以使用如下方式调用这个函数:
func main() {
result1 := processData(5)
fmt.Println(result1)
result2 := processData(3.14)
fmt.Println(result2)
result3 := processData("hello")
fmt.Println(result3)
result4 := processData([]int{1, 2, 3})
fmt.Println(result4)
}
上述代码中:
processData
函数接受一个空接口类型的参数data
,在函数内部使用switch
语句进行类型断言。- 如果
data
是数值类型(int
、float32
、float64
),则进行平方运算并返回结果。 - 如果
data
是字符串类型,则计算其长度并返回。 - 对于其他类型,直接返回
nil
。在main
函数中展示了不同类型数据传入该函数后的处理结果。
在Go语言中这样处理可以在编译阶段就保证类型安全性,避免运行时错误。不同语言实现方式略有不同,以上是以Go语言为例给出的解决方案。