拆包切片时切片

我有以下代码


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 中实现这一点?



不负相思意
浏览 83回答 1
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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go