面试题答案
一键面试package main
import (
"errors"
"fmt"
)
// 自定义错误
var EmptySliceError = errors.New("切片为空")
// 计算切片元素和的函数
func sumSlice(nums []int) (int, error) {
if len(nums) == 0 {
return 0, EmptySliceError
}
sum := 0
for _, num := range nums {
sum += num
}
return sum, nil
}
调用这个函数并处理错误:
func main() {
nums1 := []int{1, 2, 3, 4, 5}
sum, err := sumSlice(nums1)
if err != nil {
fmt.Println("错误:", err)
} else {
fmt.Println("和为:", sum)
}
nums2 := []int{}
sum, err = sumSlice(nums2)
if err != nil {
fmt.Println("错误:", err)
} else {
fmt.Println("和为:", sum)
}
}
在上述代码中:
- 首先定义了一个自定义错误
EmptySliceError
,用于切片为空时返回。 sumSlice
函数接收一个整数切片,检查切片是否为空,如果为空返回自定义错误,否则计算切片元素的和并返回和与nil
(表示无错误)。- 在
main
函数中,进行了两次调用,一次传入非空切片,一次传入空切片,分别展示了正确处理结果和错误的方式。