作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码
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/
我是一名优秀的程序员,十分优秀!