gpt4 book ai didi

go - 拆包 slice 时 slice

转载 作者:行者123 更新时间:2023-12-03 00:31:05 31 4
gpt4 key购买 nike

我有以下代码

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:]...)
}

最后一位返回除第一个之外的每个 slice ,但我想做的是从位置 1 开始解包每个 slice ,省略 0 处的值。有没有办法在 go 中实现此目的?

最佳答案

我认为在不先遍历 slice 的情况下做你想做的事情的唯一方法是编写一个 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

关于go - 拆包 slice 时 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57925888/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com