github.com/gogf/gf@v1.16.9/.example/container/gset/gset1.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/gogf/gf/container/gset" 7 ) 8 9 func main() { 10 // 创建一个非并发安全的集合对象 11 s := gset.New(true) 12 13 // 添加数据项 14 s.Add(1) 15 16 // 批量添加数据项 17 s.Add([]interface{}{1, 2, 3}...) 18 19 // 集合数据项大小 20 fmt.Println(s.Size()) 21 22 // 集合中是否存在指定数据项 23 fmt.Println(s.Contains(2)) 24 25 // 返回数据项slice 26 fmt.Println(s.Slice()) 27 28 // 删除数据项 29 s.Remove(3) 30 31 // 遍历数据项 32 s.Iterator(func(v interface{}) bool { 33 fmt.Println("Iterator:", v) 34 return true 35 }) 36 37 // 将集合转换为字符串 38 fmt.Println(s.String()) 39 40 // 并发安全写锁操作 41 s.LockFunc(func(m map[interface{}]struct{}) { 42 m[4] = struct{}{} 43 }) 44 45 // 并发安全读锁操作 46 s.RLockFunc(func(m map[interface{}]struct{}) { 47 fmt.Println(m) 48 }) 49 50 // 清空集合 51 s.Clear() 52 fmt.Println(s.Size()) 53 }