Files

52 lines
883 B
Go

package main
import (
"fmt"
"strconv"
)
type error interface {
Error() string
}
type DivisionError struct {
errMessage string
firstArgument int
secondArgument int
}
func NewDivisionError(message string, lhs, rhs int) DivisionError {
return DivisionError{
errMessage: message,
firstArgument: lhs,
secondArgument: rhs,
}
}
func (e DivisionError) Error() string {
if e.errMessage != "" {
return e.errMessage + " [" + strconv.Itoa(e.firstArgument) + ", " + strconv.Itoa(e.secondArgument) + "]"
} else {
return ""
}
}
func divide(lhs, rhs int) (int, error) {
if rhs == 0 {
return 0, NewDivisionError("zero number", lhs, rhs)
} else if lhs%2 == 0 || rhs%2 == 0 {
return 0, NewDivisionError("even number", lhs, rhs)
}
return lhs / rhs, nil
}
func main() {
x := 100
y := 0
value, err := divide(x, y)
fmt.Println(value)
fmt.Println(err)
}