func addAllValues(values ...int) int { //passes in args as slice
sum := 0
for i:= range values {
sum += values[i]
}
return sum
}
addAllValues(45, 123, 7)
Multi Returns
Neccessary for error handling as often return (val, err)
func FullName(f, l string) (string, int) {
full := f + " " + l
return full, len(full)
}
Naming Returns(Naked Returns)
Don't return, just set vars
func FullName(f, l string) (full string, length int) {
full = f + " " + l
length = len(full)
return
}
Defer
defer is put on a stack and done in LIFO order at end of ft scope
Uses?
defer closing of database and files
func main() {
defer fmt.Println("C")
fmt.Println("A")
defer fmt.Println("B")
} ///=> prints A B C