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  }