github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/xsync/value.go (about) 1 package xsync 2 3 type Value[T any] struct { 4 v T 5 mu RWMutex 6 } 7 8 func NewValue[T any](initValue T) *Value[T] { 9 return &Value[T]{v: initValue} 10 } 11 12 func (v *Value[T]) Get() T { 13 v.mu.RLock() 14 defer v.mu.RUnlock() 15 16 return v.v 17 } 18 19 func (v *Value[T]) Change(change func(old T) T) { 20 v.mu.WithLock(func() { 21 v.v = change(v.v) 22 }) 23 }