A function is defined with the func keyword, then its name, its parameters and its result types.
Parameters that share a type can share one type name, as in a, b int.
A Go function can return multiple values, and the usual pattern returns a result plus an error last.
Named return values act as local variables, and a bare return sends back their current values.
Functions are also values, so you can pass them as arguments, store them in variables and return them as closures.
func add(a, b int) int {
return a + b
}
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}
func calculate(a, b int) (sum, product int) {
sum = a + b
product = a * b
return // naked return
}
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.