mirror of
https://gitee.com/johng/gf
synced 2026-07-05 21:32:17 +08:00
去掉garray排序数组的length属性
This commit is contained in:
@ -15,7 +15,6 @@ import (
|
||||
type SortedIntArray struct {
|
||||
mu *rwmutex.RWMutex // 互斥锁
|
||||
cap int // 初始化设置的数组容量
|
||||
size int // 初始化设置的数组大小
|
||||
array []int // 底层数组
|
||||
unique *gtype.Bool // 是否要求不能重复
|
||||
compareFunc func(v1, v2 int) int // 比较函数,返回值 -1: v1 < v2;0: v1 == v2;1: v1 > v2
|
||||
@ -23,8 +22,9 @@ type SortedIntArray struct {
|
||||
|
||||
// 创建一个排序的int数组
|
||||
func NewSortedIntArray(size int, cap int, safe...bool) *SortedIntArray {
|
||||
a := &SortedIntArray {
|
||||
return &SortedIntArray {
|
||||
mu : rwmutex.New(safe...),
|
||||
array : make([]int, 0, cap),
|
||||
unique : gtype.NewBool(),
|
||||
compareFunc : func(v1, v2 int) int {
|
||||
if v1 < v2 {
|
||||
@ -36,14 +36,6 @@ func NewSortedIntArray(size int, cap int, safe...bool) *SortedIntArray {
|
||||
return 0
|
||||
},
|
||||
}
|
||||
a.size = size
|
||||
if cap > 0 {
|
||||
a.cap = cap
|
||||
a.array = make([]int, size, cap)
|
||||
} else {
|
||||
a.array = make([]int, size)
|
||||
}
|
||||
return a
|
||||
}
|
||||
|
||||
// 添加加数据项
|
||||
@ -168,11 +160,7 @@ func (a *SortedIntArray) doUnique() {
|
||||
// 清空数据数组
|
||||
func (a *SortedIntArray) Clear() {
|
||||
a.mu.Lock()
|
||||
if a.cap > 0 {
|
||||
a.array = make([]int, a.size, a.cap)
|
||||
} else {
|
||||
a.array = make([]int, a.size)
|
||||
}
|
||||
a.array = make([]int, 0, a.cap)
|
||||
a.mu.Unlock()
|
||||
}
|
||||
|
||||
|
||||
@ -15,17 +15,16 @@ import (
|
||||
type SortedArray struct {
|
||||
mu *rwmutex.RWMutex // 互斥锁
|
||||
cap int // 初始化设置的数组容量
|
||||
size int // 初始化设置的数组大小
|
||||
array []interface{} // 底层数组
|
||||
unique *gtype.Bool // 是否要求不能重复
|
||||
compareFunc func(v1, v2 interface{}) int // 比较函数,返回值 -1: v1 < v2;0: v1 == v2;1: v1 > v2
|
||||
}
|
||||
|
||||
func NewSortedArray(size int, cap int, compareFunc func(v1, v2 interface{}) int, safe...bool) *SortedArray {
|
||||
func NewSortedArray(cap int, compareFunc func(v1, v2 interface{}) int, safe...bool) *SortedArray {
|
||||
return &SortedArray{
|
||||
mu : rwmutex.New(safe...),
|
||||
unique : gtype.NewBool(),
|
||||
array : make([]interface{}, size, cap),
|
||||
array : make([]interface{}, 0, cap),
|
||||
compareFunc : compareFunc,
|
||||
}
|
||||
}
|
||||
@ -152,11 +151,7 @@ func (a *SortedArray) doUnique() {
|
||||
// 清空数据数组
|
||||
func (a *SortedArray) Clear() {
|
||||
a.mu.Lock()
|
||||
if a.cap > 0 {
|
||||
a.array = make([]interface{}, a.size, a.cap)
|
||||
} else {
|
||||
a.array = make([]interface{}, a.size)
|
||||
}
|
||||
a.array = make([]interface{}, 0, a.cap)
|
||||
a.mu.Unlock()
|
||||
}
|
||||
|
||||
|
||||
@ -16,28 +16,20 @@ import (
|
||||
type SortedStringArray struct {
|
||||
mu *rwmutex.RWMutex // 互斥锁
|
||||
cap int // 初始化设置的数组容量
|
||||
size int // 初始化设置的数组大小
|
||||
array []string // 底层数组
|
||||
unique *gtype.Bool // 是否要求不能重复
|
||||
compareFunc func(v1, v2 string) int // 比较函数,返回值 -1: v1 < v2;0: v1 == v2;1: v1 > v2
|
||||
}
|
||||
|
||||
func NewSortedStringArray(size int, cap int, safe...bool) *SortedStringArray {
|
||||
a := &SortedStringArray {
|
||||
func NewSortedStringArray(cap int, safe...bool) *SortedStringArray {
|
||||
return &SortedStringArray {
|
||||
mu : rwmutex.New(safe...),
|
||||
array : make([]string, 0, cap),
|
||||
unique : gtype.NewBool(),
|
||||
compareFunc : func(v1, v2 string) int {
|
||||
return strings.Compare(v1, v2)
|
||||
},
|
||||
}
|
||||
a.size = size
|
||||
if cap > 0 {
|
||||
a.cap = cap
|
||||
a.array = make([]string, size, cap)
|
||||
} else {
|
||||
a.array = make([]string, size)
|
||||
}
|
||||
return a
|
||||
}
|
||||
|
||||
// 添加加数据项
|
||||
@ -161,11 +153,7 @@ func (a *SortedStringArray) doUnique() {
|
||||
// 清空数据数组
|
||||
func (a *SortedStringArray) Clear() {
|
||||
a.mu.Lock()
|
||||
if a.cap > 0 {
|
||||
a.array = make([]string, a.size, a.cap)
|
||||
} else {
|
||||
a.array = make([]string, a.size)
|
||||
}
|
||||
a.array = make([]string, 0, a.cap)
|
||||
a.mu.Unlock()
|
||||
}
|
||||
|
||||
|
||||
@ -9,11 +9,12 @@ type S struct {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
func main() {
|
||||
var source = []string{"59705a2c1fd50736a4c768a1", "597a95ff1fd5073e48bb2272", "597a960f1fd5073e48bb2274"}
|
||||
var CacheChannelKeys *garray.SortedStringArray
|
||||
CacheChannelKeys = garray.NewSortedStringArray(0, 0)
|
||||
var CacheChannelKeys = garray.NewSortedStringArray(3)
|
||||
CacheChannelKeys.Add(source...)
|
||||
fmt.Println(CacheChannelKeys.Slice())
|
||||
fmt.Println(CacheChannelKeys.Len())
|
||||
}
|
||||
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"gitee.com/johng/gf/g/encoding/gjson"
|
||||
)
|
||||
|
||||
func main() {
|
||||
j := gjson.New(nil)
|
||||
j.Set("array", []int{1,2,3})
|
||||
j.Append("array", 4)
|
||||
j.Dump()
|
||||
}
|
||||
19
geg/other/test_test.go
Normal file
19
geg/other/test_test.go
Normal file
@ -0,0 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"gitee.com/johng/gf/g/container/garray"
|
||||
)
|
||||
|
||||
func TestGFArray001(t *testing.T) {
|
||||
var source = []string{"59705a2c1fd50736a4c768a1", "597a95ff1fd5073e48bb2272", "597a960f1fd5073e48bb2274"}
|
||||
var CacheChannelKeys = garray.NewSortedStringArray(0)
|
||||
CacheChannelKeys.Add(source...)
|
||||
t.Logf("%#v\n", CacheChannelKeys)
|
||||
|
||||
CacheChannelKeys.Clear()
|
||||
CacheChannelKeys = garray.NewSortedStringArray(len(source))
|
||||
t.Logf("%#v\n", CacheChannelKeys)
|
||||
CacheChannelKeys.Add(source...)
|
||||
t.Logf("%#v\n", CacheChannelKeys)
|
||||
}
|
||||
Reference in New Issue
Block a user