Fungsi tanpa nama (anonymous function) punya banyak kegunaan penting, terutama pada bahasa seperti Go yang mendukung first-class function (fungsi bisa diperlakukan seperti variabel).
Penjelasan berikut akan sangat mudah dipahami.
Apa itu fungsi tanpa nama?
Fungsi tanpa nama adalah fungsi yang dibuat di tempat, tidak punya nama, dan biasanya dipakai untuk kebutuhan cepat atau sekali pakai.
Contoh:
func(x int) int {
return x * x
} Apa kegunaannya?
Berikut manfaat utamanya:
1. Untuk membuat fungsi kecil yang hanya dipakai sekali (one-time use)
Daripada bikin fungsi panjang seperti:
func kuadrat(x int) int {
return x * x
}
Kadang kamu cuma butuh sekali saja. Maka cukup:
func(x int) int {
return x * x
}
Dipakai langsung.
2. Dikirim sebagai parameter untuk fungsi lain (higher-order function)
Misal fungsi operasi() ingin menerima “cara menghitung”:
hasil := operasi(10, func(x int) int {
return x * x // cara menghitung dikirim sebagai fungsi
})
Ini membuat fungsi jadi fleksibel, karena logika yang dikirim bisa apa saja:
Kuadrat:
func(x int) int { return x * x }
Kubik:
func(x int) int { return x * x * x }
Setengah:
func(x int) int { return x / 2 }
Tanpa perlu mengubah fungsi operasi.
3. Closure — bisa membawa data dari luar fungsi
Contoh:
y := 5
f := func(x int) int {
return x + y
}
fmt.Println(f(10)) // hasil: 15
Fungsi tanpa nama mampu “membawa” variabel di luar (y).
Ini sangat berguna untuk logika yang butuh konfigurasi.
4. Dipakai sebagai callback
Mirip Javascript, Go juga sering pakai fungsi tanpa nama untuk:
-
Eksekusi tertunda (deferred execution)
-
Event handler
-
Custom comparator sorting
Contoh pemakaian dengan defer:
defer func() {
fmt.Println("Selesai!")
}() 5. Mempermudah penulisan kode yang ringkas
Tanpa harus membuat fungsi panjang yang hanya dipakai sedikit.
Contoh sorting dengan custom aturan:
sort.Slice(data, func(i, j int) bool {
return data[i] < data[j]
})
Tanpa fungsi tanpa nama, kamu harus bikin fungsi terpisah hanya untuk sorting, ribet.
6. Meminimalisir polusi nama fungsi
Kalau semua fungsi kecil diberi nama, file akan penuh dengan fungsi yang tidak penting:
func tambahSatu(x int) int { ... }
func kurangSatu(x int) int { ... }
func kaliDua(x int) int { ... }
Dengan anonymous function:
operasi(x, func(x int) int { return x + 1 })
Jauh rapi.
Simpulannya
Fungsi tanpa nama berguna untuk:
✔ membuat fungsi yang hanya dipakai 1 kali
✔ dikirim sebagai parameter ke fungsi lain
✔ membuat closure (membawa variabel dari luar)
✔ callback (defer, event, goroutine)
✔ membuat kode lebih fleksibel dan ringkas
✔ menghindari banyak fungsi kecil yang tidak perlu diberi nama

0 Comments:
Posting Komentar