Here's what you learned in this section:
Functions are declared with func, followed by name, parameters, and return types
Go functions can return multiple values, which is used for error handling
Named return values act as variables and enable naked returns
Variadic functions accept any number of arguments using ...
Go passes arguments by value. Use pointers to modify originals
Closures capture variables from their surrounding scope
defer schedules cleanup to run when a function returns
The init function runs automatically before main