def_let.go 746 B

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