deferって何に使うの?

package main
import . "fmt"

func f( a int ) {
 Println( "f(): ", a );
}

func main() {
 defer f(1);
 Println( "main() 1" );
 defer f(2);
 Println( "main() 2" );
}

結果
main() 1
main() 2
f(): 2
f(): 1