MST

星途 面试题库

面试题:Go语言中如何利用空接口实现简单的泛型功能示例

请编写一个函数,该函数接收一个空接口类型的参数,能够处理不同类型的切片并返回切片元素的总和。假设切片元素类型为int或float64。例如传入[]int{1, 2, 3} 返回6,传入[]float64{1.5, 2.5} 返回4.0。
42.5万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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 切片的调用示例。