GoLang Defer Fonksiyonu Ne İşe Yarar – Nasıl Kullanılır ?

Merhabalar,

Bu yazıda Go dilinde bir fonksiyon olan defer fonksiyonun ne işe yaradığından bahsedip , ufak bir örnek paylaşacağım.

Defer fonksiyonuyla tanımlanan fonksiyon veya işlem içinde olduğu fonksiyonun çalışması tamamlanmadan çalışmamaktadır.

Örnek olarak alttaki kodun çıktısı eğer defer olmasaydı

hello

world

şeklinde olacaktı. ama defer ile tanımlandığı için fonksiyon diğer tüm işlemlerden sonra çalıştığı için bu kod parçacığının çıktısı :

world

hello

olacaktır.

package main

import “fmt”

func main() { // fonksiyon çalışmaya başlıyor
defer fmt.Println(“world”) // defer tanımı geldi ekrana çıktı verilmiyor işlem sırada

fmt.Println(“hello”) // hello ekrana basıldı ve sonrasında herhangi bir işlem olmadığı için defer tanımlı işleme geri dönülüp o gerçekleştirildi
}

mantığını kavramak için biraz daha farklı bir örnek yapalım. alttaki kodda başlangıçta bağlantımız kapalı. baglanti,baglantikes ve mudahaleet adında üç fonksiyonumuz mevcut.  main içerisinden mudahaleEt ‘i çağırdım. baglantikes fonksiyonunu defer ile çalıştırdım. amaç bütün işlemler sona erdikten sonra bağlantının açık kalmaması. en altta kodun çıktısından göreceğiniz üzere sıra olarak ortada olmasına rağmen tüm işlemler gerçekleştikten sonra çalışmakta. fakat sadece kendi bulunduğu blok için geçerli. main içerisinde ondan sonra yazdığım fmt komutu defer’den sonra çalışabiliyor o kısıma dikkat edelim. umarım açıklayıcı olmuştur.

 

package main
import (
    “fmt”
)
var baglanti = false
func main() {
    fmt.Println(“baglanti kuruluyor”)
    mudahaleEt()
    fmt.Printf(“son durumda baglanti :  %v\n “, baglanti)
}
func mudahaleEt() {
    Baglan()
    fmt.Println(“defer işlemi geliyor”)
    defer BaglantiKes()
    fmt.Printf(“baglanti durumu %v\n “, baglanti)
    fmt.Println(“test komutu calistirildi”)
}
func Baglan() {
    baglanti = true
    fmt.Println(“baglanti kuruldu”)
}
func BaglantiKes() {
    baglanti = false
    fmt.Println(“baglanti kesildi”)
}
Kodun çıktısı :
baglanti kuruluyor
baglanti kuruldu
defer işlemi geliyor
baglanti durumu true
test komutu calistirildi
baglanti kesildi
son durumda baglanti : false

 

Summary
Review Date
Reviewed Item
GoLang Defer Fonksiyonu Ne İşe Yarar - Nasıl Kullanılır ?
Author Rating
51star1star1star1star1star

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir