23 lines
290 B
Go
23 lines
290 B
Go
package safety
|
|
|
|
import "sync"
|
|
|
|
type Slice[T any] struct {
|
|
*Var[[]T]
|
|
mu sync.Mutex
|
|
}
|
|
|
|
func NewSlice[T any](a []T) *Slice[T] {
|
|
return &Slice[T]{
|
|
NewVar(a),
|
|
sync.Mutex{},
|
|
}
|
|
}
|
|
|
|
func (r *Slice[T]) Append(t ...T) {
|
|
r.mu.Lock()
|
|
ts := append(r.Load(), t...)
|
|
r.Store(ts)
|
|
r.mu.Unlock()
|
|
}
|