Go语言教程之边写边学:常用的软件库:slice和map过滤器

go-funk这个辅助函数可以解决常见问题,如删除切片中的所有重复项、获取两个集合之间的差异、用值填充数组的元素、获取两个集合之间的交集等等。

安装软件包:

go get github.com/thoas/go-funk

 

示例代码1:

package main

import (
	"fmt"

	"github.com/thoas/go-funk"
)

func main() {
	slice1 := []int{1, 3, 5, 7, 9}
	slice2 := []int{1, 2, 3, 4, 5, 6}

	// 集合1中,不包含在集合2的元素集合subtract := funk.Subtract(slice1, slice2)
	fmt.Println(subtract)

	// 计算交集intersect := funk.Intersect(slice1, slice2)
	fmt.Println(intersect)

	// 分别计算其他集合中不存在的元素slice_1_Diff, slice_2_Diff := funk.Difference(slice1, slice2)
	fmt.Println(slice_1_Diff)
	fmt.Println(slice_2_Diff)

	// 按下标打包,类似python的元组zip := funk.Zip(slice1, slice2)
	fmt.Println(zip)

	// 判断集合1是否为集合2的子集subset := funk.Subset(slice1, slice2)
	fmt.Println(subset)

	// 判断两个切片元素是否相同Equal := funk.Equal(slice1, slice2)
	fmt.Println(Equal)

	// 判断slice1是否是slice2中的一个元素convertSlice := funk.Contains(slice2, slice1)
	fmt.Println(convertSlice)
}

输出1:

[7 9]
[1 3 5]
[7 9]
[2 4 6]
[{1 1} {3 2} {5 3} {7 4} {9 5}]
false
false
false

 

示例代码2:

package main

import (
	"fmt"

	"github.com/thoas/go-funk"
)

func main() {
	var map1 = map[string]int{"Mark": 10, "Sandy": 20,
		"Rocky": 30, "Rajiv": 40, "Kate": 50}

	// 通过自定义函数转换为另一种类型flip := funk.Map(map1, func(k string, v int) (int, string) {
		return v, k
	})
	fmt.Println(flip)

	// 返回元素键数组keys := funk.Keys(map1)
	fmt.Println(keys)

	// 返回元素值数组values := funk.Values(map1)
	fmt.Println(values)
}

输出2:

map[10:Mark 20:Sandy 30:Rocky 40:Rajiv 50:Kate]
[Sandy Rocky Rajiv Kate Mark]
[40 50 10 20 30]
  • 当前日期:
  • 北京时间:
  • 时间戳:
  • 今年的第:18周
  • 我的 IP:3.149.10.88
农历
五行
冲煞
彭祖
方位
吉神
凶神
极简任务管理 help
+ 0 0 0
Task Idea Collect