Cara membuat Defer dan Scope di Golang

Di Go, defer digunakan untuk menjadwalkan eksekusi suatu fungsi hingga segera sebelum fungsi tempatnya dideklarasikan selesai dieksekusi. Hal ini sering digunakan untuk menjalankan kode pembersihan atau menutup file setelah selesai digunakan. Mari kita lihat contoh penggunaan defer:

package main

import "fmt"

func main() {
    defer fmt.Println("Eksekusi 1")
    fmt.Println("Eksekusi 2")
    fmt.Println("Eksekusi 3")
}

Pada contoh di atas, outputnya akan menjadi:

Eksekusi 2
Eksekusi 3
Eksekusi 1

Meskipun pernyataan defer ditulis pertama kali, ia akan dieksekusi terakhir, setelah fungsi tempatnya dideklarasikan (main dalam kasus ini) selesai dieksekusi.

Sekarang, tentang scope di Go:

Scope mengacu pada area dalam kode di mana sebuah variabel dapat diakses. Di Go, variabel yang dideklarasikan di luar fungsi dapat diakses dari mana saja dalam paket yang sama. Variabel yang dideklarasikan di dalam sebuah fungsi hanya dapat diakses di dalam fungsi tersebut. Contoh:

package main

import "fmt"

var globalVar = "Ini variabel global"

func main() {
    localVar := "Ini variabel lokal"
    fmt.Println(globalVar) // Output: Ini variabel global
    fmt.Println(localVar)  // Output: Ini variabel lokal
    fungsiLain()
}

func fungsiLain() {
    // fmt.Println(localVar) // Ini akan menyebabkan error karena localVar tidak dapat diakses di sini
    fmt.Println(globalVar) // Output: Ini variabel global
}

Variabel globalVar dideklarasikan di luar fungsi main sehingga dapat diakses dari mana saja dalam paket. Sebaliknya, localVar dideklarasikan di dalam fungsi main, sehingga hanya dapat diakses di dalam fungsi tersebut. Jika Anda mencoba mengakses localVar di luar fungsi main atau di dalam fungsi lain, itu akan menyebabkan error.

Dengan memahami konsep defer dan scope, Anda dapat menulis kode Go yang lebih efisien, bersih, dan mudah dimengerti.

Di bab berikutnya akan dibahas tentang bagaimana membuat underscope di Golang

Last updated