package
0.0.0-20240205144839-01d63041f4bf
Repository: https://github.com/fletchnj/learninggo-2e.git
Documentation: pkg.go.dev

# README

Exercise 1

Question

The simple calculator program doesn't handle one error case: division by zero. Change the function signature for the math operations to return both an int and an error. In the div function, if the divisor is 0, return 0, errors.New("division by zero"). In all other cases, return the calculated value and nil. Adjust the main function to check for this error.

Solution

Change the math operation functions to:

func add(i int, j int) (int, error) { return i + j, nil }

func sub(i int, j int) (int, error) { return i - j, nil }

func mul(i int, j int) (int, error) { return i * j, nil }

func div(i int, j int) (int, error) {
    if j == 0 {
        return 0, errors.New("division by zero")
    }
    return i / j, nil
}

Change the opMap declaration to:

var opMap = map[string]func(int, int) (int, error){
	"+": add,
	"-": sub,
	"*": mul,
	"/": div,
}

Finally, you need to have a variable for each return value when opFunc is called:

		result, err := opFunc(p1, p2)
		if err != nil {
			fmt.Println(err)
			continue
		}
        fmt.Println(result)

It's a good practice to add a test case to make sure your changes work.