fix lock issue in function search for package garray

This commit is contained in:
john
2020-05-03 23:08:18 +08:00
parent 90d19a84ce
commit 13e2353729
3 changed files with 3 additions and 17 deletions

View File

@ -473,21 +473,7 @@ func (a *Array) Contains(value interface{}) bool {
// or returns -1 if not exists.
func (a *Array) Search(value interface{}) int {
a.mu.RLock()
if len(a.array) == 0 {
return -1
}
result := -1
for index, v := range a.array {
if v == value {
result = index
break
}
}
a.mu.RUnlock()
return result
}
func (a *Array) doSearch(value interface{}) int {
defer a.mu.RUnlock()
if len(a.array) == 0 {
return -1
}

View File

@ -489,6 +489,7 @@ func (a *IntArray) Contains(value int) bool {
// or returns -1 if not exists.
func (a *IntArray) Search(value int) int {
a.mu.RLock()
defer a.mu.RUnlock()
if len(a.array) == 0 {
return -1
}
@ -499,7 +500,6 @@ func (a *IntArray) Search(value int) int {
break
}
}
a.mu.RUnlock()
return result
}

View File

@ -493,6 +493,7 @@ func (a *StrArray) ContainsI(value string) bool {
// or returns -1 if not exists.
func (a *StrArray) Search(value string) int {
a.mu.RLock()
defer a.mu.RUnlock()
if len(a.array) == 0 {
return -1
}
@ -503,7 +504,6 @@ func (a *StrArray) Search(value string) int {
break
}
}
a.mu.RUnlock()
return result
}