github.com/gogf/gf@v1.16.9/.example/container/gmap/basic.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/gogf/gf/container/gmap" 7 ) 8 9 func main() { 10 // 创建一个默认的gmap对象, 11 // 默认情况下该gmap对象不支持并发安全特性, 12 // 初始化时可以给定true参数开启并发安全特性,用以并发安全场景。 13 m := gmap.New() 14 15 // 设置键值对 16 for i := 0; i < 10; i++ { 17 m.Set(i, i) 18 } 19 // 查询大小 20 fmt.Println(m.Size()) 21 // 批量设置键值对(不同的数据类型对象参数不同) 22 m.Sets(map[interface{}]interface{}{ 23 10: 10, 24 11: 11, 25 }) 26 fmt.Println(m.Size()) 27 28 // 查询是否存在 29 fmt.Println(m.Contains(1)) 30 31 // 查询键值 32 fmt.Println(m.Get(1)) 33 34 // 删除数据项 35 m.Remove(9) 36 fmt.Println(m.Size()) 37 38 // 批量删除 39 m.Removes([]interface{}{10, 11}) 40 fmt.Println(m.Size()) 41 42 // 当前键名列表(随机排序) 43 fmt.Println(m.Keys()) 44 // 当前键值列表(随机排序) 45 fmt.Println(m.Values()) 46 47 // 查询键名,当键值不存在时,写入给定的默认值 48 fmt.Println(m.GetOrSet(100, 100)) 49 50 // 删除键值对,并返回对应的键值 51 fmt.Println(m.Remove(100)) 52 53 // 遍历map 54 m.Iterator(func(k interface{}, v interface{}) bool { 55 fmt.Printf("%v:%v ", k, v) 56 return true 57 }) 58 59 // 自定义写锁操作 60 m.LockFunc(func(m map[interface{}]interface{}) { 61 m[99] = 99 62 }) 63 64 // 自定义读锁操作 65 m.RLockFunc(func(m map[interface{}]interface{}) { 66 fmt.Println(m[99]) 67 }) 68 69 // 清空map 70 m.Clear() 71 72 // 判断map是否为空 73 fmt.Println(m.IsEmpty()) 74 }