从 golang 发布的一开始,我总是面临着一些缺失的问题:

  • 泛型

  • 函数式编程

然后 golang v1.18 出来了generics。

这一下子解锁了很多用 golang 编写代码的新方法。

详细来说,现在可以轻松编写通用函数,帮助您以更实用的方式编写代码。

为此,我启动了一个开源项目,旨在填补该语言的剩余空白。

GitHub 徽标废除/fp-go

Fp-go 是由 Golang 1.18+ 泛型提供支持的函数式编程助手的集合。

fp-go

Go 参考[Go 报告](https://goreportcard.com/badge/github. com/repeale/fp-go)codecov

Fp-go 是由 Golang1.18+generics提供支持的函数式编程助手的集合。

内容

  • 安装

  • 特点

*咖喱

*变化

  • 帮手

*每

*过滤器

*平

*平面图

*地图

*减少

*一些

*撰写

*管道

*咖喱

安装

需要去 1.18+

去获取 github.com/repeale/fp-go

进入全屏模式 退出全屏模式

特点

  • 咖喱

  • 变化

咖喱

默认!数据最后!

func isPositive(x int) bool {

返回 x > 0

}

功能主要(){

filterPositive :u003d fp.Filter(isPositive)

数字 :u003d []int{1, 2, 3, 4, 5}

filterPositive(数字)

}

进入全屏模式 退出全屏模式

变化

Variations 允许您在回调函数中获取不同的参数,以便您只获取真正需要的参数。

默认

带索引

带切片

默认

只有当前项目可用:

fp.Map[int, string](func(x int){ ... })

进入全屏模式 退出全屏模式

带索引

当前元素和索引可用:

fp.MapWithIndex

...

进入全屏模式 退出全屏模式

在 GitHub 上查看

该项目已经处于良好状态,可以让您编写良好的功能代码。但它仍在开发中,我正在寻求帮助以扩大帮助者的集合。

在这里您可以找到Helpers的列表以及示例。

图书馆的几个核心支柱:

  • 咖喱

  • 变化

咖喱

默认情况下,数据总是最后。这允许编写可以仅在需要时使用实际数据运行的前期可重用代码。

// Example with Map helper

func int64toInt(x int64) string {
    return strconv.FormatInt(x, 10)
}

// ...

data := []int64{1, 2, 3}

fp.Map(int64toInt)(data)

// => []string{"1", "2", "3", "4"}

进入全屏模式 退出全屏模式

变化

每个助手都有变化。这允许您为您的用例使用正确的实现,而无需处理未使用的代码。完整的文档可以在这里找到。

// Available variations

// Default
fp.Map[int, string](func(x int) { ... })

// *WithIndex
fp.MapWithIndex[int, string](func(x int, i int) { ... })

// *WithSlice
fp.MapWithSlice[int, string](func(x int, i int, xs: []int) { ... })

进入全屏模式 退出全屏模式

期待贡献者、反馈和更多新功能的到来,我真的希望你会喜欢使用这个包!