Обработка исключений

package main

import (
    "errors"
    "fmt"
)

func errorIfTrue(param bool) (err error) {
    //Guaranteed code execution
    //In case of any return or panic
    defer fmt.Println("defer")

    fmt.Println("start")
    if param {
        fmt.Println("error")
        return errors.New("test error")
    }

    return nil
}

func main() {
    errorIfTrue(true)
    //printed:
    //start
    //error
    //defer

    errorIfTrue(false)
    //printed:
    //start
    //defer
}