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  }