golang,go,博客,开源,编程
github.com/deckarep/Golang-set
介绍github.com/deckarep/Golang-set
是 Go 语言中一个流行的 集合(Set) 库,它提供了强类型、安全且易于使用的集合数据结构。Go 语言标准库没有内置集合(Set)类型,而该库弥补了这一缺陷,并提供了基本的集合操作,如 添加、删除、交集、并集、差集 等。
可以使用 go get
安装:
go get github.com/deckarep/golang-set/v2
然后在 Go 代码中导入:
import mapset "github.com/deckarep/golang-set/v2"
package main
import (
"fmt"
mapset "github.com/deckarep/golang-set/v2"
)
func main() {
// 创建一个新的集合
set := mapset.NewSet[int]()
// 添加元素
set.Add(1)
set.Add(2)
set.Add(3)
// 打印集合
fmt.Println(set) // 输出: Set{1, 2, 3}
// 判断是否包含某个元素
fmt.Println(set.Contains(2)) // 输出: true
fmt.Println(set.Contains(5)) // 输出: false
}
如果需要在并发环境下使用,可以使用 线程安全的 Set:
safeSet := mapset.NewThreadSafeSet[int]()
safeSet.Add(100)
fmt.Println(safeSet.Contains(100)) // 输出: true
setA := mapset.NewSet[int](1, 2, 3)
setB := mapset.NewSet[int](3, 4, 5)
unionSet := setA.Union(setB)
fmt.Println(unionSet) // 输出: Set{1, 2, 3, 4, 5}
setA := mapset.NewSet[int](1, 2, 3)
setB := mapset.NewSet[int](3, 4, 5)
intersectSet := setA.Intersect(setB)
fmt.Println(intersectSet) // 输出: Set{3}
setA := mapset.NewSet[int](1, 2, 3, 4)
setB := mapset.NewSet[int](3, 4, 5)
diffSet := setA.Difference(setB)
fmt.Println(diffSet) // 输出: Set{1, 2}
setA := mapset.NewSet[int](1, 2)
setB := mapset.NewSet[int](1, 2, 3, 4)
fmt.Println(setA.IsSubset(setB)) // 输出: true
fmt.Println(setB.IsSuperset(setA)) // 输出: true
set := mapset.NewSet[string]("apple", "banana", "cherry")
set.Each(func(item string) bool {
fmt.Println(item)
return false // return true 立即终止遍历
})
set := mapset.NewSet[int](1, 2, 3, 4)
slice := set.ToSlice()
fmt.Println(slice) // 输出: [1 2 3 4](顺序可能不同)
mapset "github.com/deckarep/golang-set/v2"
interface{}
存储数据github.com/deckarep/golang-set
Golang-set
提供了 集合(Set)数据结构,支持基本的集合操作。