def_mut.go 945 B

1234567891011121314151617181920212223242526272829303132333435
  1. // package def_mut -- параметрический изменяемый контейнер
  2. package def_mut
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers"
  6. )
  7. // Mut -- параметрический изменяемый контейнер
  8. type Mut[T any] struct {
  9. owner *owner.LOwner
  10. val T
  11. }
  12. // NewMut -- возвращает новый параметрический изменяемый контейнер
  13. func NewMut[T any](owner *owner.LOwner, val T) *Mut[T] {
  14. helpers.If(owner == nil).Hassert("NewMut(): owner==nil")
  15. sf := &Mut[T]{
  16. owner: owner,
  17. val: val,
  18. }
  19. return sf
  20. }
  21. // Get -- возвращает хранимое значение
  22. func (sf *Mut[T]) Get() T {
  23. sf.owner.Pass().CheckOwner()
  24. return sf.val
  25. }
  26. // Set -- устанавливает хранимое значение
  27. func (sf *Mut[T]) Set(val T) {
  28. sf.owner.Pass().CheckOwner()
  29. sf.val = val
  30. }