1 Star 0 Fork 0

Cruvie Kang/kk_go_kit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
slice.go 691 Bytes
一键复制 编辑 原始数据 按行查看 历史
Cruvie Kang 提交于 2024-08-06 01:50 . update
package kk_sync
import (
"sync"
)
type Slice[T any] struct {
slice []T
rwMutex *sync.RWMutex
}
func NewSlice[T any]() *Slice[T] {
return &Slice[T]{
slice: make([]T, 0),
rwMutex: &sync.RWMutex{},
}
}
func (s *Slice[T]) Append(elems ...T) {
s.rwMutex.Lock()
defer s.rwMutex.Unlock()
s.slice = append(s.slice, elems...)
}
func (s *Slice[T]) Slice() []T {
s.rwMutex.RLock()
defer s.rwMutex.RUnlock()
return s.slice
}
func (s *Slice[T]) Len() int {
s.rwMutex.RLock()
defer s.rwMutex.RUnlock()
return len(s.slice)
}
func (s *Slice[T]) Copy() *Slice[T] {
s.rwMutex.RLock()
defer s.rwMutex.RUnlock()
slice := NewSlice[T]()
copy(slice.slice, s.slice)
return slice
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cruvie/kk_go_kit.git
git@gitee.com:cruvie/kk_go_kit.git
cruvie
kk_go_kit
kk_go_kit
v0.1.2

搜索帮助