Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
Artikel ini merupakan bagian dari seri Belajar Golang Dari Dasar

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

Bagikan:

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.
Lightbox