score.go 647 B

123456789101112131415161718192021222324252627
  1. // Package score 提供成绩转换与校验功能。
  2. package score
  3. import (
  4. "fmt"
  5. "strconv"
  6. )
  7. // Max 是导出的常量,大写开头,其他包可以使用 score.Max。
  8. const Max = 100
  9. // valid 是包内函数,小写开头,其他包不能直接调用。
  10. func valid(value int) bool {
  11. return value >= 0 && value <= Max
  12. }
  13. // Parse 将文本转换为合法成绩。大写开头,允许其他包调用。
  14. func Parse(text string) (int, error) {
  15. value, err := strconv.Atoi(text)
  16. if err != nil {
  17. return 0, err
  18. }
  19. if !valid(value) {
  20. return 0, fmt.Errorf("成绩 %d 无效,应在 0~%d 之间", value, Max)
  21. }
  22. return value, nil
  23. }