Function
The type comes after the variable name.
Omit type
When two or more consecutive named function parameters share a type, you can omit the type from all but the last.
Multiple results
A function can return any number of results.
Named return values
Go's return values may be named. If so, they are treated as variables defined at the top of the function.
When named, they are initialized to the zero values for their types when the function begins.
A return
statement without arguments returns the named return values. This is known as a "naked" return.
caution
Naked return statements should be used only in short functions, as with the example shown here. They can harm readability in longer functions.
Function values
Functions are values too. They can be passed around just like other values.
Function values may be used as function arguments and return values.
Function closures
Go functions may be closures. A closure is a function value that references variables from outside its body. The function may access and assign to the referenced variables; in this sense the function is "bound" to the variables.
For example, the adder
function returns a closure. Each closure is bound to its own sum
variable.