Defer kelimesinin Türkçe’deki karşılığı ertelemektir. Bu deyimi yapacağımız işlemin başına eklersek o işlemi içerisinde bulunduğu fonksiyonun içindeki işlemlerden sonra çalıştırır. Çok karışık bir cümle kurdum ama uygulamaya geçince anlayacaksınız.
package main
import "fmt"
func main() {
defer fmt.Println("İlk Cümle")
fmt.Println("İkinci Cümle")
}
Çıktımız şu şekilde olacaktır;
İkinci Cümle
İlk Cümle
Açıklamaya gelirsek ekrana İlk Cümle yazısını bastıran satırımızın başına defer terimini ekledik. defer eklediğimiz satır main() fonksiyonunun içinde olduğu için main() fonsyionundaki tüm işlemler tamamlandıktan sonra ekrana yazımızı bastırdı.
Birden fazla defer ekleyecek olursak;
package main
import "fmt"
func main() {
defer fmt.Println("ilk Cümle")
defer fmt.Println("İkinci Cümle")
defer fmt.Println("Üçüncü Cümle")
defer fmt.Println("Dördüncü Cümle")
fmt.Println("Beşinci Cümle")
}
Çıktımız şu şekilde olacaktır;
Beşinci Cümle
Dördüncü Cümle
Üçüncü Cümle
İkinci Cümle
ilk Cümle
Burdan anlıyoruz ki en baştaki defer eklenen satır en son işleme tabi tutuluyor. Hadi defer ile alakalı bir programlama alıştırması yapalım.
package main
import "fmt"
func main() {
fmt.Println("Sayıyor")
for i := 0; i < 10; i++ {
defer fmt.Println(i)
}
fmt.Println("Bitti")
}
Çıktımız şöyle olacaktır;
Sayıyor
Bitti
9
8
7
6
5
4
3
2
1
0