From 2c2b3afb014353c33621e69bdfed0e9c4d3b0d74 Mon Sep 17 00:00:00 2001 From: GarfieldKwong Date: Thu, 28 Jun 2018 19:41:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3garray=E7=9A=84=E6=BD=9C?= =?UTF-8?q?=E5=9C=A8=E9=97=AE=E9=A2=98=E3=80=82=E5=BD=93=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E4=B8=AD=E6=9C=89=E4=BB=BB=E4=BD=95=E9=94=99=E8=AF=AF=E5=8F=91?= =?UTF-8?q?=E7=94=9F=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E4=BA=92=E6=96=A5?= =?UTF-8?q?=E9=94=81=E5=B0=86=E4=B8=8D=E4=BC=9A=E8=A2=AB=E9=87=8A=E6=94=BE?= =?UTF-8?q?=E3=80=82=20=E4=BA=92=E6=96=A5=E6=89=80=E9=87=8A=E6=94=BE?= =?UTF-8?q?=E8=A6=81=E7=94=A8defer=E6=9D=A5=E7=A1=AE=E4=BF=9D=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/container/garray/garray_int.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/g/container/garray/garray_int.go b/g/container/garray/garray_int.go index ebaca9a5e..ba0650506 100644 --- a/g/container/garray/garray_int.go +++ b/g/container/garray/garray_int.go @@ -40,39 +40,40 @@ func NewIntArray(size int, cap ... int) *IntArray { // 获取指定索引的数据项, 调用方注意判断数组边界 func (a *IntArray) Get(index int) int { a.mu.RLock() + defer a.mu.RUnlock() value := a.array[index] - a.mu.RUnlock() return value } // 设置指定索引的数据项, 调用方注意判断数组边界 func (a *IntArray) Set(index int, value int) { a.mu.Lock() + defer a.mu.RUnlock() a.array[index] = value - a.mu.Unlock() } // 在当前索引位置前插入一个数据项, 调用方注意判断数组边界 func (a *IntArray) Insert(index int, value int) { a.mu.Lock() + defer a.mu.RUnlock() rear := append([]int{}, a.array[index : ]...) a.array = append(a.array[0 : index], value) a.array = append(a.array, rear...) - a.mu.Unlock() + } // 删除指定索引的数据项, 调用方注意判断数组边界 func (a *IntArray) Remove(index int) { a.mu.Lock() + defer a.mu.RUnlock() a.array = append(a.array[ : index], a.array[index + 1 : ]...) - a.mu.Unlock() } // 追加数据项 func (a *IntArray) Append(value int) { a.mu.Lock() + defer a.mu.RUnlock() a.array = append(a.array, value) - a.mu.Unlock() } // 数组长度 @@ -94,12 +95,12 @@ func (a *IntArray) Slice() []int { // 清空数据数组 func (a *IntArray) Clear() { a.mu.Lock() + defer a.mu.RUnlock() if a.cap > 0 { a.array = make([]int, a.size, a.cap) } else { a.array = make([]int, a.size) } - a.mu.Unlock() } // 查找指定数值的索引位置,返回索引位置,如果查找不到则返回-1 @@ -140,13 +141,13 @@ func (a *IntArray) Search(value int) int { // 使用自定义方法执行加锁修改操作 func (a *IntArray) LockFunc(f func(array []int)) { a.mu.Lock() + defer a.mu.Unlock() f(a.array) - a.mu.Unlock() } // 使用自定义方法执行加锁读取操作 func (a *IntArray) RLockFunc(f func(array []int)) { a.mu.RLock() + defer a.mu.Unlock() f(a.array) - a.mu.RUnlock() -} +} \ No newline at end of file