Anonymous Function dan Higher-Order Function Dalam Golang

Table of Contents
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 : 

Mengenal Function Rekursif dan Non Rekursif Di Golang

Posting Komentar