我有以下代码
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 slice
func 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的值。有没有办法实现这一目标?
答案 0 :(得分:3)
我认为无需先经过切片就可以做自己想要的事情的唯一方法是编写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
。