|
|
- package main
-
- import (
- "errors"
- "fmt"
- )
-
- var (
- ErrHourlyRate = errors.New("invalid hourly rate")
- ErrHoursWorked = errors.New("invalid hours worked per week")
- )
-
- func main() {
-
- pay := payDay(81, 50)
- fmt.Println(pay)
-
- }
-
- func payDay(hoursWorked, hourlyRate int) int {
-
- report := func() {
- fmt.Printf("hoursWorked: %d\nhourlyRate: %d\n", hoursWorked, hourlyRate)
- }
- defer report()
-
- if hourlyRate < 10 || hourlyRate > 75 {
- panic(ErrHourlyRate)
- }
- if hoursWorked < 0 || hoursWorked > 80 {
- panic(ErrHoursWorked)
- }
-
- if hoursWorked > 40 {
- hoursOver := hoursWorked - 40
- overTime := hoursOver * 2
- regularPay := 40 * hourlyRate
- return regularPay + overTime
- }
-
- return hoursWorked * hourlyRate
-
- }
|