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)
1func Every(in interface{}, elements ...interface{}) bool
- 当
elements都在in中时,则返回true; 否则为false;
1 | |
3.5 批量查找(有一则True)
1func Some(in interface{}, elements ...interface{}) bool
- 当
elements至少有一个在in中时,则返回true; 否则为false;
1 | |
3.6 获取最后或第一个元素
1 | |
3.7 用元素填充切片
1func 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
1func 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 根据字符串生成切片
1func 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使用/