logicId.go 500 B

123456789101112131415161718192021222324252627282930
  1. package comp
  2. import (
  3. "errors"
  4. )
  5. //
  6. var (
  7. ErrInvalidLogicId = errors.New("Invalid logic id")
  8. )
  9. type LogicId struct {
  10. funcId uint64 //999
  11. cataId uint64 //99
  12. subId uint64 //99
  13. instId uint64 //99
  14. }
  15. func Parse(logicId uint64) (*LogicId, error) {
  16. sid := &LogicId{}
  17. sid.instId = logicId % 100
  18. sid.subId = logicId / 100 % 100
  19. sid.cataId = logicId / 10000 % 100
  20. sid.funcId = logicId / 1000000
  21. if sid.funcId >= 1000 || sid.funcId <= 0 {
  22. return nil, ErrInvalidLogicId
  23. }
  24. return sid, nil
  25. }