并发安全map新增Iterator遍历方法

This commit is contained in:
John
2018-02-07 17:55:52 +08:00
parent 9a32b203fb
commit 0d4500d6e6
10 changed files with 89 additions and 0 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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{})

View File

@ -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)

View File

@ -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{})

View File

@ -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)

View File

@ -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)

View File

@ -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{})

View File

@ -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)

View File

@ -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{})