Anonymous Function dan Higher-Order Function Dalam Golang
Kali ini Code Dadakan akan membahas tentang Anonymous Function dan Higher-Order Function di dalam bahasa pemerograman golang. Fitur ini dapat memungkinkan kita untuk mendefinisikan fungsi secara langsung di dalam blok kode tanpa membuat fungsi tersebut di luar blok kode. Ini akan sangat bermanfaat ketika kita hanya perlu menjalankan fungsi sederhana yang tidak perlu di gunakan di tempat lain.
Berikut adalah contoh full code yang akan saya jelaskan, di dalam kode ini sudah terdapat function anonymous dan higher-order function :
package main
import "fmt"
func main(){
name := func (name string) string {
return name;
}
fmt.Println(name("Budi"))
user := func(userName string) string {
return userName
}
selectUser("Admin", user)
selectUser("Bro", user)
selectUser("test", func(s string) string {
return "Root"
});
}
type DetectionUser func(string) string
func selectUser(userName string, detectUser DetectionUser){
if detectUser(userName) == "Admin" {
fmt.Println("Welcome Admin")
}else if detectUser(userName) == "Root" {
fmt.Println("Welcome Root")
}else {
fmt.Println("Welcome....", userName)
}
}
Anonymous Function
Anonymous Function adalah sebuah fungsi yang di deklarasikan tanpa nama. Bisa di lihat pada contoh kode di atas yang seperti in :
name := func(name string) string {
return name
}
fmt.Println(name("Budi"))
Di atas, kita mendeklarasikan fungsi anonim yang dapat menerima parameter string dan mengembalikan nilai string tersebut dan kemudian nilai nya akan di simpan ke dalam variable name. maka ketika variable name tersebut di panggi di dalam Println, maka program akan menampilkan nilai "Budi".
Higher-Order Function
Higher order function adalah sebuah fungsi yang dapat menerima fungsi lain sebagai argumen. Bisa di lihat pada contoh full kode di atas, kita mendefinisikan fungsi selectUser yang menerima parameter detectUser sebagai fungsi.
type DetectionUser func(string) string
type DetectionUser menjadi tipe alias untuk fungsi yang menerima parameter bertipe string dan mengembalikan string.
Fungsi selectUser()
Nah, pada fungsi selectUser kita bisa memanfaatkan higher-order function dengan cara menerima fungsi detectUser sebagai parameter. Fungsi selectUser berperan untuk melakukan pemeriksaan dari hasil nilai detectUser(userName) adalah "admin" atau "root".
func selectUser(userName string, detectUser DetectionUser) {
if detectUser(userName) == "Admin" {
fmt.Println("Welcome Admin")
} else if detectUser(userName) == "Root" {
fmt.Println("Welcome Root")
} else {
fmt.Println("Welcome....", userName)
}
}
Bisa di lihat pada blok kode fungsi main, ada beberapa cara untuk memanggil selectUser() :
user := func(userName string) string {
return userName
}
selectUser("Admin", user)
selectUser("Bro", user)
Pada contoh di atas, ketika memanggil selectUser("Admin", user) maka program akan memeriksa jika user adalah admin, maka outputnya adalah "Welcome Admin". Begitupun dengan selectUser("Bro", user).
selectUser("test", func(s string) string {
return "Root"
})
Contoh kedua ( kode di atas ) , kita langsung memberikan fungsi anonymous function sebagai parameter kedua dari selectUser yang akan mengembalikan nilai "Root". di Karenakan fungsi selectUser terdapat pendeteksi user "Root" maka hasil yang akan muncul adalah "Welcome Root".
Cukup sampai sini dulu yaa penjelasan tentang anonymous function dan higher-order function yang ada pada bahasa pemerograman golang. Semoga anda bisa paham yaa apa yang kami jelaskan pada module ini, Terus belajar dan melatih tingkat skill koding anda. Terima kasih
Selanjutnya anda bisa lanjut ke Module :
Posting Komentar