mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
并发安全map新增Iterator遍历方法
This commit is contained in:
@ -33,6 +33,15 @@ func (this *IntBoolMap) Clone() *map[int]bool {
|
||||
return &m
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *IntBoolMap) Iterator(f func (k int, v bool)) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 设置键值对
|
||||
func (this *IntBoolMap) Set(key int, val bool) {
|
||||
this.mu.Lock()
|
||||
|
||||
@ -22,6 +22,15 @@ func NewIntIntMap() *IntIntMap {
|
||||
}
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *IntIntMap) Iterator(f func (k int, v int)) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *IntIntMap) Clone() *map[int]int {
|
||||
m := make(map[int]int)
|
||||
|
||||
@ -23,6 +23,15 @@ func NewIntInterfaceMap() *IntInterfaceMap {
|
||||
}
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *IntInterfaceMap) Iterator(f func (k int, v interface{})) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *IntInterfaceMap) Clone() *map[int]interface{} {
|
||||
m := make(map[int]interface{})
|
||||
|
||||
@ -22,6 +22,15 @@ func NewIntStringMap() *IntStringMap {
|
||||
}
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *IntStringMap) Iterator(f func (k int, v string)) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *IntStringMap) Clone() *map[int]string {
|
||||
m := make(map[int]string)
|
||||
|
||||
@ -23,6 +23,15 @@ func NewInterfaceInterfaceMap() *InterfaceInterfaceMap {
|
||||
}
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *InterfaceInterfaceMap) Iterator(f func (k interface{}, v interface{})) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *InterfaceInterfaceMap) Clone() *map[interface{}]interface{} {
|
||||
m := make(map[interface{}]interface{})
|
||||
|
||||
@ -22,6 +22,15 @@ func NewStringBoolMap() *StringBoolMap {
|
||||
}
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *StringBoolMap) Iterator(f func (k string, v bool)) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *StringBoolMap) Clone() *map[string]bool {
|
||||
m := make(map[string]bool)
|
||||
|
||||
@ -22,6 +22,15 @@ func NewStringIntMap() *StringIntMap {
|
||||
}
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *StringIntMap) Iterator(f func (k string, v int)) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *StringIntMap) Clone() *map[string]int {
|
||||
m := make(map[string]int)
|
||||
|
||||
@ -23,6 +23,15 @@ func NewStringInterfaceMap() *StringInterfaceMap {
|
||||
}
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *StringInterfaceMap) Iterator(f func (k string, v interface{})) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *StringInterfaceMap) Clone() *map[string]interface{} {
|
||||
m := make(map[string]interface{})
|
||||
|
||||
@ -22,6 +22,15 @@ func NewStringStringMap() *StringStringMap {
|
||||
}
|
||||
}
|
||||
|
||||
// 给定回调函数对原始内容进行遍历
|
||||
func (this *StringStringMap) Iterator(f func (k string, v string)) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *StringStringMap) Clone() *map[string]string {
|
||||
m := make(map[string]string)
|
||||
|
||||
@ -23,6 +23,14 @@ func NewUintInterfaceMap() *UintInterfaceMap {
|
||||
}
|
||||
}
|
||||
|
||||
func (this *UintInterfaceMap) Iterator(f func (k uint, v interface{})) {
|
||||
this.mu.RLock()
|
||||
for k, v := range this.m {
|
||||
f(k, v)
|
||||
}
|
||||
this.mu.RUnlock()
|
||||
}
|
||||
|
||||
// 哈希表克隆
|
||||
func (this *UintInterfaceMap) Clone() *map[uint]interface{} {
|
||||
m := make(map[uint]interface{})
|
||||
|
||||
Reference in New Issue
Block a user