0%

lo - go语言里面的lodash

lo

samber/lo 是一个 go 里面类似 js 里的 lodash 的库,可以让我们很方便地对切片做一些诸如 filter、unique 等操作的库。

安装

1
go get github.com/samber/lo@v1

最新版本支持 go1.18+,也就是可以使用泛型,这样就给开发者带来了更大的便利了。

示例

  1. Filter:过滤出符合条件的元素
1
2
3
4
even := lo.Filter[int]([]int{1, 2, 3, 4}, func(x int, _ int) bool {
return x%2 == 0
})
// []int{2, 4}
  1. Map:对每一个元素进行处理,返回新的切片
1
2
3
4
lo.Map[int64, string]([]int64{1, 2, 3, 4}, func(x int64, _ int) string {
return strconv.FormatInt(x, 10)
})
// []string{"1", "2", "3", "4"}
  1. Uniq:去重
1
2
uniqValues := lo.Uniq[int]([]int{1, 2, 2, 1})
// []int{1, 2}
  1. Chunk:分组
1
2
lo.Chunk[int]([]int{0, 1, 2, 3, 4, 5}, 2)
// [][]int{{0, 1}, {2, 3}, {4, 5}}