我有以下代码
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处的值。在go中有没有实现这一点的方法?
发布于 2019-09-13 23:04:14
我认为做你想做的事情的唯一方法是编写一个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打电话。
https://stackoverflow.com/questions/57925888
复制相似问题