我有以下代码func Sum(a []int) int { res := 0 for _, n := range a { res += n } return res}func SumAll(ns ...[]int) (sums []int) { for _, s := range ns { sums = append(sums, Sum(s)) } return}//SumAllTails sums [:1] in each slicefunc SumAllTails(sls ...[]int) []int { newsls := [][]int{} for _, sl := range sls { newsls = append(newsls, sl[1:]) } return SumAll(newsls...)}理想情况下,我想将最后一个函数更改为如下所示func SumAllTails(sls ...[]int) []int { return SumAll(sls[:][1:]...)}最后一位返回除第一个之外的每个切片,但我想做的是从位置 1 开始解压每个切片,省略 0 处的值。有没有办法在 go 中实现这一点?
1 回答
冉冉说
TA贡献1877条经验 获得超1个赞
我认为在不先遍历切片的情况下做你想做的事情的唯一方法是编写一个 SumAlln 函数:
func SumAlln(n int, ns ...[]int) (sums []int) {
for _, s := range ns {
sums = append(sums, Sum(s[n:]))
}
return
}
func SumAll(ns...[]int) []int {
return SumAlln(0,ns...)
}
然后打电话SumAlln。
- 1 回答
- 0 关注
- 82 浏览
添加回答
举报
0/150
提交
取消