我有以下代碼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 關注
- 109 瀏覽
添加回答
舉報
0/150
提交
取消