def_num.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // package def_num -- базовый тип числа
  2. package def_num
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_err"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/result"
  8. )
  9. // Num -- внутренне представление числа
  10. type Num struct {
  11. val def_spec.AInt
  12. }
  13. // NewNum -- возвращает целое число по требованию.
  14. func NewNum(val def_spec.AInt) *Num {
  15. sf := &Num{
  16. val: val,
  17. }
  18. return sf
  19. }
  20. // Get -- возвращает внутреннее число
  21. func (sf *Num) Get() def_spec.AInt {
  22. return sf.val
  23. }
  24. // Int -- возвращает число
  25. func (sf *Num) Int() int {
  26. return int(sf.val)
  27. }
  28. // Byte -- возвращает число как byte
  29. func (sf *Num) Byte() *def_spec.Result[byte] {
  30. if -128 <= sf.val && sf.val <= 127 {
  31. return result.NewOk(byte(sf.val))
  32. }
  33. err := def_err.Err("Num.Byte(). val(%v) not in -128..127", sf.val)
  34. return result.NewErr[byte](err)
  35. }
  36. // String -- возвращает строку
  37. func (sf *Num) String() string {
  38. return fmt.Sprintf("%v", sf.Get())
  39. }