Array Reduce 或类似的

我有一个数组:


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 中做同样的事情?


慕运维8079593
浏览 120回答 2
2回答

FFIVE

这是一个不完整的实现,但它让您了解为什么这是一个坏主意和非惯用的 Go:package mainimport "fmt"type Array []inttype ReducerFn func(prev int, next int) intfunc (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 方法,这可能非常不切实际。

米琪卡哇伊

我会选择Modf ()i = 0f = 0for _, asset := range assets {    integer, frac := Modf(asset.value)    i += integer    f += math.Round(frac*100)/100))}fmt.Println(i, f)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go