def_let_int.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // package def_let_int -- внутренне неизменяемое целое
  2. package def_let_int
  3. import (
  4. "encoding/binary"
  5. "fmt"
  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. val def_spec_base.Int
  12. }
  13. // LetInt -- возвращает новое внутреннее неизменяемое целое.
  14. func LetInt(val def_spec_base.Int) *LInt {
  15. sf := &LInt{
  16. val: val,
  17. }
  18. return sf
  19. }
  20. // Get -- возвращает хранимое значение потокобезопасной переменной.
  21. func (sf *LInt) Get() def_spec_base.Int {
  22. return sf.val
  23. }
  24. // ToStr -- возвращает как строку.
  25. func (sf *LInt) ToStr() def_spec_base.ATxt {
  26. return def_spec_fn.Sprintf("%v", sf.val)
  27. }
  28. // ToByte -- возвращает как срез байт.
  29. func (sf *LInt) ToByte() []byte {
  30. buf := make([]byte, 8)
  31. binary.BigEndian.PutUint64(buf, uint64(sf.val))
  32. return buf
  33. }
  34. // Int -- возвращает число
  35. func (sf *LInt) Int() int {
  36. return int(sf.val)
  37. }
  38. // String -- возвращает строку
  39. func (sf *LInt) String() string {
  40. return fmt.Sprintf("%v", sf.val)
  41. }