Study
Go

Defer di Go

Penjelasan

defer menunda eksekusi sebuah pernyataan sampai fungsi yang memanggilnya SELESAI (baik lewat return normal maupun panic) — idiom Go yang sangat umum dipakai untuk memastikan resource dibersihkan (mis. menutup file, koneksi database), mirip peran finally di bahasa lain tapi ditulis tepat di sebelah kode yang membuka resource-nya, bukan terpisah di akhir.

Contoh Konsep

package main

import "fmt"

func prosesData() {
	fmt.Println("Mulai proses")
	defer fmt.Println("Selesai, membersihkan resource") // dijalankan TERAKHIR

	fmt.Println("Sedang memproses...")
}

func main() {
	prosesData()
	// Output:
	// Mulai proses
	// Sedang memproses...
	// Selesai, membersihkan resource
}

Praktikum

Buat fungsi bukaFile() yang mencetak "Membuka file", lalu langsung defer mencetak "Menutup file" tepat setelahnya, dan terakhir mencetak "Membaca isi file". Panggil fungsi itu dari main() dan amati urutan outputnya.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Kalau ada beberapa defer di satu fungsi, urutan eksekusinya LIFO (last in, first out) — defer yang ditulis PALING TERAKHIR akan dijalankan PALING PERTAMA saat fungsi selesai, kebalikan dari urutan penulisannya.