Exercises & activities from the go workshop provided by Packt: https://courses.packtpub.com/courses/go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
839 B

  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. )
  6. var (
  7. ErrHourlyRate = errors.New("invalid hourly rate")
  8. ErrHoursWorked = errors.New("invalid hours worked per week")
  9. )
  10. func main() {
  11. pay, err := payDay(81, 50)
  12. if err != nil {
  13. fmt.Println(err)
  14. }
  15. pay, err = payDay(80, 5)
  16. if err != nil {
  17. fmt.Println(err)
  18. }
  19. pay, err = payDay(80, 50)
  20. if err != nil {
  21. fmt.Println(err)
  22. }
  23. fmt.Println(pay)
  24. }
  25. func payDay(hoursWorked, hourlyRate int) (int, error) {
  26. if hourlyRate < 10 || hourlyRate > 75 {
  27. return 0, ErrHourlyRate
  28. }
  29. if hoursWorked < 0 || hoursWorked > 80 {
  30. return 0, ErrHoursWorked
  31. }
  32. if hoursWorked > 40 {
  33. hoursOver := hoursWorked - 40
  34. overTime := hoursOver * 2
  35. regularPay := 40 * hourlyRate
  36. return regularPay + overTime, nil
  37. }
  38. return hoursWorked * hourlyRate, nil
  39. }