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.

43 lines
742 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 := payDay(81, 50)
  12. fmt.Println(pay)
  13. }
  14. func payDay(hoursWorked, hourlyRate int) int {
  15. report := func() {
  16. fmt.Printf("hoursWorked: %d\nhourlyRate: %d\n", hoursWorked, hourlyRate)
  17. }
  18. defer report()
  19. if hourlyRate < 10 || hourlyRate > 75 {
  20. panic(ErrHourlyRate)
  21. }
  22. if hoursWorked < 0 || hoursWorked > 80 {
  23. panic(ErrHoursWorked)
  24. }
  25. if hoursWorked > 40 {
  26. hoursOver := hoursWorked - 40
  27. overTime := hoursOver * 2
  28. regularPay := 40 * hourlyRate
  29. return regularPay + overTime
  30. }
  31. return hoursWorked * hourlyRate
  32. }