Functions, Multiple Returns & Closures
Returning (result, error), named results, variadic functions and functions as values.
Go functions can return several values, which is how errors are reported: (result, error). Functions are values too, so they can be passed around, returned and closed over.
Functions
divide returns a value and an error; the caller checks err != nil.
minMax uses named results and a bare return; min and max are built in since Go 1.21.
sum(nums ...int) accepts any number of ints; sum(slice...) passes a slice.
counter returns a closure that keeps its own count between calls.
apply takes a function parameter.
result, _:= divide(a, b) // ignoring the error result, err:= divide(a, b) if err != nil { return err }
Discarding errors with _ hides failures. Check and handle (or return) every error.
How do Go functions report errors?
By returning an error as the last result; nil means success. Callers check it immediately.