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

package main
import (
"errors"
"fmt"
)
var (
ErrHourlyRate = errors.New("invalid hourly rate")
ErrHoursWorked = errors.New("invalid hours worked per week")
)
func main() {
pay, err := payDay(81, 50)
if err != nil {
fmt.Println(err)
}
pay, err = payDay(80, 5)
if err != nil {
fmt.Println(err)
}
pay, err = payDay(80, 50)
if err != nil {
fmt.Println(err)
}
fmt.Println(pay)
}
func payDay(hoursWorked, hourlyRate int) (int, error) {
if hourlyRate < 10 || hourlyRate > 75 {
return 0, ErrHourlyRate
}
if hoursWorked < 0 || hoursWorked > 80 {
return 0, ErrHoursWorked
}
if hoursWorked > 40 {
hoursOver := hoursWorked - 40
overTime := hoursOver * 2
regularPay := 40 * hourlyRate
return regularPay + overTime, nil
}
return hoursWorked * hourlyRate, nil
}