面试题答案
一键面试package main
import (
"fmt"
)
func sum(slice interface{}) (interface{}, bool) {
switch v := slice.(type) {
case []int:
var sum int
for _, num := range v {
sum += num
}
return sum, true
case []float64:
var sum float64
for _, num := range v {
sum += num
}
return sum, true
default:
return nil, false
}
}
你可以这样调用这个函数:
func main() {
intSlice := []int{1, 2, 3}
result, ok := sum(intSlice)
if ok {
fmt.Printf("整数切片的总和: %d\n", result)
} else {
fmt.Println("不支持的类型")
}
floatSlice := []float64{1.5, 2.5}
result, ok = sum(floatSlice)
if ok {
fmt.Printf("浮点数切片的总和: %f\n", result)
} else {
fmt.Println("不支持的类型")
}
}
以上代码定义了一个 sum
函数,该函数接收一个空接口类型的参数,通过 switch
语句进行类型断言,判断传入的切片是 int
类型还是 float64
类型,并分别计算其总和。在 main
函数中展示了对 int
切片和 float64
切片的调用示例。