Go工具库go-funk使用
Go工具库go-funk使用
1. 介绍
Go-funk
是基于反射(reflect
)实现的一个现代Go
工具库,封装了对slice/map/struct/string
等的操作。
2. 下载
1 |
|
3. 切片(slice
)操作
3.1 判断元素是否存在
funk.Contains
: 接收任意类型。funk.ContainsX
:X
代表具体类型,如:ContainsInt、ContainsString...
1 |
|
3.2 查找元素第一次出现位置
funk.IndexOf
: 接收任意类型,不存在则返回-1
。funk.IndexOfX
:X
代表具体类型,不存在则返回-1
。
1 |
|
3.3 查找元素最后一次出现位置
funk.LastIndexOf
: 接收任意类型,不存在则返回-1
。funk.LastIndexOfX
:X
代表具体类型,不存在则返回-1
。
1 |
|
3.4 批量查找(都有则True)
1
func Every(in interface{}, elements ...interface{}) bool
- 当
elements
都在in
中时,则返回true
; 否则为false
;
1 |
|
3.5 批量查找(有一则True)
1
func Some(in interface{}, elements ...interface{}) bool
- 当
elements
至少有一个在in
中时,则返回true
; 否则为false
;
1 |
|
3.6 获取最后或第一个元素
1 |
|
3.7 用元素填充切片
1
func Fill(in interface{}, fillValue interface{}) (interface{}, error)
- 将
in
中的所有元素,设置成fillValue
1 |
|
3.8 取两个切片共同元素结果集
Join(larr, rarr interface{}, fnc JoinFnc)
: 当fnc=funk.InnerJoin
,代表合并两个任意类型切片。JoinXXX(larr, rarr interface{}, fnc JoinFnc)
: 指定类型合并,推荐使用。
1 |
|
3.9 获取去掉两切片共同元素结果集
同样使用Join
和JoinXXX
方法,而fnc
设置成funk.OuterJoin
1 |
|
3.10 求只存在某切片的元素(除去共同元素)
1 |
|
3.11 分别去掉两个切片共同元素(两结果集)
1 |
|
3.12 遍历切片
ForEach
: 从左边遍历切片。ForEachRight
: 从右边遍历切片。
1 |
|
3.13 删除首或尾
1 |
|
3.14 判断A切片是否属于B切片子集
Subset(x interface{}, y interface{}) bool
: 判断x
是否属于y
的切片。
1 |
|
3.15 分组
3.15 分组
Chunk(arr interface{}, size int) interface{}
: 把arr
按照每组size个
进行分组
1 |
|
3.16 把结构体切片转成map
ToMap(in interface{}, pivot string) interface{}
: 把切片in
,转成以pivot
为key
的map
。
1 |
|
3.17 把切片值转成Map
中的Key
1 |
|
3.18 把二维切片转成一维切片
1 |
|
3.19 打乱切片
1 |
|
3.20 反转切片
1 |
|
3.21 元素去重
1 |
|
3.22 删除制定元素
1 |
|
4. 映射(map
)操作
4.1 获取所有的Key
1 |
|
4.2 获取所有的Value
1 |
|
5. 结构体(struct
)切片操作
5.1 取结构体某元素为切片
1 |
|
6. 判断操作
6.1 判断相等
1 |
|
6.2 判断类型一致
1 |
|
6.3 判断array|slice
1 |
|
6.4 判断空
funk.IsEmpty(obj interface{})
: 判断为空。funk.NotEmpty(obj interface{})
: 判断不为空。
1 |
|
7. 类型转换
7.1 任意数字转float64
1
func ToFloat64(x interface{}) (float64, bool)
- 将任何数字类型,转成
float64
类型,**@注:只能是数字类型: uint8、uint16、uint32、uint64、int、int8、int16、int32、int64、float32、float64**
1 |
|
7.2 将X
转成[]X
1 |
|
8.字符串操作
8.1 根据字符串生成切片
1
func Shard(str string, width int, depth int, restOnly bool) []string
width
: 代表根据几个字节生成一个元素。depth
: 将字符串前x
个元素转成切片。restOnly
: 当为false
时,最后一个元素为原字符串,当为true
时,最后一个元素为原字符串剩余元素
1 |
|
9.数字计算
9.1 最大值(Max
)
1 |
|
9.2 最小值(Min
)
1 |
|
9.3 求和(Sum
)
1 |
|
9.4 求乘积(Product
)
1 |
|
10. 其他操作
10.1 生成随机数
1 |
|
10.2 生成随机字符串
1 |
|
10.3 三元运算
1 |
|
Go工具库go-funk使用
https://blog.longpi1.com/2023/06/05/Go工具库go-funk使用/