Deferred function calls are pushed onto a stack. When a function returns, its deferred calls are executed in last-in-first-out order.
lets write a program to count numbers from 1 to 9
package main
import "fmt"
func main() {
	fmt.Println("counting")
	for i := 0; i < 10; i++ {
		 fmt.Println(i)
	}
	fmt.Println("done")
}
Stacking defers - use defer  	 defer fmt.Println(i).  because of defer its give you output of last result in first thats
known as last-in-first out manner
package main
import "fmt"
func main() {
	fmt.Println("counting")
	for i := 0; i < 10; i++ {
		 defer fmt.Println(i)
	}
	fmt.Println("done")
}
Important:
	for i := 0; i < 10; i++ {
		 defer fmt.Println(i)
	}
output:
counting
done
9
8
7
6
5
4
3
2
1
0