Anonymous Function
Pada materi-materi sebelumnya, kita selalu memberi nama ketika membuat sebuah function. Pada kasus tertentu, terkadang lebih mudah jika mendeklarasikan sebuah function yang langsung dijadikan value untuk suatu variabel atau parameter tanpa harus membuat nama function. Function yang dideklarasikan tanpa nama ini disebut sebagai anonymous function.
Karena anonymous function adalah function yang tidak memiliki nama, maka ketika membuat anonymous function kita langsung menggunakannya. Contohnya adalah langsung dijadikan sebagai nilai suatu variabel, sebagai argument saat memanggil function lain, atau sebagai return value dari function lain.
Contoh Kode
Agar lebih mudah memahami penggunaan anonymous function, perhatikan contoh kode berikut ini.
package main
import "fmt"
func authorized(username string, authorize func(string) bool) {
if authorize(username) {
fmt.Println("Authorized")
} else {
fmt.Println("Unauthorized")
}
}
func main() {
// Contoh 1 - Dengan variabel
onlyAdmin := func(username string) bool {
return username == "admin"
}
authorized("admin", onlyAdmin)
// Contoh 2 - Langsung di parameter sebagai argument
authorized("admin", func(username string) bool {
return username == "member"
})
}
Pada contoh kode di atas, kita membuat function bernama authorized
yang menerima dua parameter yaitu username dengan tipe data string, dan authorize dengan tipe data function. Function authorized
akan mencetak kata Authorized atau Unauthorized berdasarkan username yang diberikan dan bagaimana function authorize bekerja.
Dalam main
function, terdapat dua contoh pembuatan anonymous function. Yang pertama adalah dengan menyimpannya dalam variabel, atau yang kedua dengan cara menuliskannya secara langsung pada saat ingin digunakan di parameter.
Berikutnya: Recursive Function