1. 创建和初始化
package main
import (
"fmt"
"github.com/gogf/gf/container/gmap"
)
func main() {
// 创建一个空的 gmap.Map
m := gmap.New()
// 创建并初始化 gmap.Map
m = gmap.NewFrom(gmap.Map{
"key1": "value1",
"key2": "value2",
})
fmt.Println(m)
}
2. 添加、获取和删除元素
package main
import (
"fmt"
"github.com/gogf/gf/container/gmap"
)
func main() {
m := gmap.New()
// 添加元素
m.Set("key1", "value1")
m.Set("key2", "value2")
// 获取元素
val, ok := m.Get("key1")
if ok {
fmt.Println("Value:", val)
}
// 删除元素
m.Remove("key1")
fmt.Println(m)
}
3. 并发安全
gmap.Map 是并发安全的,可以在多个协程中安全地读写:
package main
import (
"fmt"
"github.com/gogf/gf/container/gmap"
"sync"
)
func main() {
m := gmap.New()
// 使用 WaitGroup 等待协程完成
var wg sync.WaitGroup
// 启动多个协程并发写入
for i := 0; i < 10; i++ {
wg.Add(1)
go func(index int) {
defer wg.Done()
key := fmt.Sprintf("key%d", index)
value := fmt.Sprintf("value%d", index)
m.Set(key, value)
}(i)
}
// 等待协程完成
wg.Wait()
// 输出结果
fmt.Println(m.Size(), m.Map())
}
4. 迭代
package main
import (
"fmt"
"github.com/gogf/gf/container/gmap"
)
func main() {
m := gmap.NewFrom(gmap.Map{
"key1": "value1",
"key2": "value2",
})
// 迭代所有元素
m.Iterator(func(key, value interface{}) bool {
fmt.Printf("Key: %s, Value: %s\n", key, value)
return true
})
}
5. 其他方法
gmap.Map 还提供了一系列其他方法,如清空、判断是否包含某个键、获取键的列表等。
package main
import (
"fmt"
"github.com/gogf/gf/container/gmap"
)
func main() {
m := gmap.NewFrom(gmap.Map{
"key1": "value1",
"key2": "value2",
})
// 是否包含键
fmt.Println(m.Contains("key1"))
// 获取键的列表
keys := m.Keys()
fmt.Println("Keys:", keys)
// 清空 map
m.Clear()
fmt.Println(m)
}
这些是 gmap.Map 的一些基本用法,更多高级特性和用法可以查阅 GoFrame 官方文档。
转载请注明出处:http://www.zyzy.cn/article/detail/7693/GoFrame