def_let_int.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // package def_let_int -- внутренне неизменяемое целое
  2. package def_let_int
  3. import (
  4. "encoding/binary"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_base"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_fn"
  8. )
  9. // LInt -- внутренне неизменяемое целое.
  10. type LInt struct {
  11. *def_let.Let[def_spec_base.Int]
  12. }
  13. // LetInt -- возвращает новое внутреннее неизменяемое целое.
  14. func LetInt(val def_spec_base.Int) *LInt {
  15. sf := &LInt{
  16. Let: def_let.NewLet(val),
  17. }
  18. return sf
  19. }
  20. // Get -- возвращает хранимое значение потокобезопасной переменной.
  21. func (sf *LInt) Get() def_spec_base.Int {
  22. return sf.Let.Get()
  23. }
  24. // ToStr -- возвращает как строку.
  25. func (sf *LInt) ToStr() def_spec_base.ATxt {
  26. return def_spec_fn.Sprintf("%v", sf.Let.Get())
  27. }
  28. // ToByte -- возвращает как срез байт.
  29. func (sf *LInt) ToByte() []byte {
  30. buf := make([]byte, 8)
  31. binary.BigEndian.PutUint64(buf, uint64(sf.Let.Get()))
  32. return buf
  33. }