我有一个数组:const assets = [{ type: 'X', value: 322.12}, { type: 'X', value: 413.21}]我想要值的总和(735,33)在 node.js 我可以使用:const sum = assets.reduce((s, val) => ( s = s + val.value), 0)我怎样才能在 Go 中做同样的事情?
2 回答
FFIVE
TA贡献1797条经验 获得超6个赞
这是一个不完整的实现,但它让您了解为什么这是一个坏主意和非惯用的 Go:
package main
import "fmt"
type Array []int
type ReducerFn func(prev int, next int) int
func (arr Array) Reduce(fn ReducerFn, i int) int {
prev := i
for _, v := range arr {
prev = fn(prev, v)
}
return prev
}
func main() {
i := Array([]int{1,2,4})
fmt.Println(i.Reduce(func(prev int, next int) int {
return prev + next
}, 10))
}
由于 Go 中没有泛型,因此您必须为每种返回类型创建不同的 reducer 方法,这可能非常不切实际。
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
我会选择Modf ()
i = 0
f = 0
for _, asset := range assets {
integer, frac := Modf(asset.value)
i += integer
f += math.Round(frac*100)/100))
}
fmt.Println(i, f)
- 2 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消