package cache import ( "sync" ) // SliceCache结构体代表基于切片的缓存,内部使用切片存储元素,并通过读写锁保证并发安全 type SliceCache struct { data []interface{} rwmu sync.RWMutex } // NewSliceCache创建并返回一个新的基于切片的缓存实例 func NewSliceCache() *SliceCache { return &SliceCache{ data: make([]interface{}, 0), } } // Add方法用于向切片缓存中添加元素,写操作加写锁保证并发安全 func (sc *SliceCache) Add(element interface{}) { sc.rwmu.Lock() sc.data = append(sc.data, element) sc.rwmu.Unlock() } // GetAll方法用于获取切片缓存中的所有元素,读操作加读锁允许并发读 func (sc *SliceCache) GetAll() []interface{} { sc.rwmu.RLock() result := make([]interface{}, len(sc.data)) copy(result, sc.data) sc.rwmu.RUnlock() return result } // Remove方法用于从切片缓存中删除指定元素,写操作加写锁保证并发安全 func (sc *SliceCache) Remove(element interface{}) bool { sc.rwmu.Lock() for i, e := range sc.data { if e == element { sc.data = append(sc.data[:i], sc.data[i+1:]...) sc.rwmu.Unlock() return true } } sc.rwmu.Unlock() return false }