Initial commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package arr
|
||||
|
||||
import "sync"
|
||||
|
||||
type ArrayType interface {
|
||||
Add(value interface{})
|
||||
Check(value interface{}) bool
|
||||
Len() int
|
||||
Values() map[interface{}]bool
|
||||
}
|
||||
|
||||
// CheckType type for check array data
|
||||
type CheckArrayType struct {
|
||||
values map[interface{}]bool
|
||||
sm sync.Mutex
|
||||
len int
|
||||
}
|
||||
|
||||
// NewCheckArrayType
|
||||
func NewCheckArrayType(len int) *CheckArrayType {
|
||||
return &CheckArrayType{values: make(map[interface{}]bool, len)}
|
||||
}
|
||||
|
||||
// Add
|
||||
func (ct *CheckArrayType) Add(value interface{}) {
|
||||
defer ct.sm.Unlock()
|
||||
ct.sm.Lock()
|
||||
ct.values[value] = true
|
||||
ct.len++
|
||||
}
|
||||
|
||||
// AddMutil
|
||||
func (ct *CheckArrayType) AddMutil(values ...interface{}) {
|
||||
for _, v := range values {
|
||||
v := v
|
||||
ct.Add(v)
|
||||
}
|
||||
}
|
||||
|
||||
// Check
|
||||
func (ct *CheckArrayType) Check(value interface{}) bool {
|
||||
defer ct.sm.Unlock()
|
||||
ct.sm.Lock()
|
||||
if b, ok := ct.values[value]; ok && b {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Len
|
||||
func (ct *CheckArrayType) Len() int {
|
||||
defer ct.sm.Unlock()
|
||||
ct.sm.Lock()
|
||||
return ct.len
|
||||
}
|
||||
|
||||
// Values
|
||||
func (ct *CheckArrayType) Values() map[interface{}]bool {
|
||||
defer ct.sm.Unlock()
|
||||
ct.sm.Lock()
|
||||
return ct.values
|
||||
}
|
||||
Reference in New Issue
Block a user