A clausula defer define que uma função deve ser chamada no fim da execução da rotina atual. Essa clausula é muito útil para por exemplo fechar arquivos abertos durante a execução da função.
f, err := os.Open("filename.ext")
if err != nil {
log.Fatal(err)
}
defer f.Close()
Mais um exemplo:
package main
import (
"fmt"
)
func main() {
defer func() {
fmt.Printf("Fim da função main\r\n")
}()
for i := 0; i < 5; i++ {
defer fmt.Printf("%d\r\n", i)
fmt.Printf("dentro do for %d\r\n", i)
}
}