func

Uppercase functions are exported for package

No overloading

func [name]([arg1] [argtype1], ...) [rtype] {

}

e.g

func addV(val1 int, val2 int) int {
    return val1 + val2
}

sum := addV(1, 4)

If all same type can omit types

func addV(val1, val2 int) int {
    return val1 + val2
}

Arbitrary Amount of Args

Can do if all same type

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)

Naming Returns(Naked Returns)

Don't return, just set vars

Defer

defer is put on a stack and done in LIFO order at end of ft scope

Uses?

  • defer closing of database and files

vars have value frozen

Last updated