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 方法,这可能非常不切实际。