def_num_let.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // package def_num -- внутреннее число
  2. package def_num
  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. // LNum -- внутренне неизменяемое число.
  10. type LNum struct {
  11. val def_spec_base.Num
  12. }
  13. // LetNum -- возвращает новое внутреннее неизменяемое число.
  14. func LetNum[T def_spec_base.NumConstraint](val T) *LNum {
  15. sf := &LNum{
  16. val: def_spec_base.Num(val),
  17. }
  18. return sf
  19. }
  20. // Get -- возвращает хранимое значение числа.
  21. func (sf *LNum) Get() def_spec_base.Num {
  22. return sf.val
  23. }
  24. // Txt -- возвращает как текст.
  25. func (sf *LNum) Txt() def_spec_base.Txt {
  26. return def_spec_fn.Sprintf("%v", sf.val)
  27. }
  28. // ToByte -- возвращает как срез байт.
  29. func (sf *LNum) ToByte() []byte {
  30. buf := make([]byte, 8)
  31. binary.BigEndian.PutUint64(buf, uint64(sf.val))
  32. return buf
  33. }
  34. // Int -- возвращает целое
  35. func (sf *LNum) Int() int {
  36. return int(sf.val)
  37. }
  38. // Num -- возвращает как число
  39. func (sf *LNum) Num() def_spec_base.Num {
  40. return sf.val
  41. }
  42. // String -- возвращает строку
  43. func (sf *LNum) String() string {
  44. return fmt.Sprintf("%v", sf.val)
  45. }