Mengenal Function Sebagai Parameter di Golang

Table of Contents
Mengenal Function Sebagai Parameter di Golang

Di dalam bahasa pemerograman golang, terdapat konsep yang dapat memungkinkan kita untuk melakukan assign fungsi sebagai parameter pada fungsi lain. Di golang biasanya di sebut dengan Function as Parameter. Kali ini Code Dadakan akan membahas tipe fungsi ini dengan mengacu pada contoh kode di bawah ini, dan akan kami jelaskan setiap step pada kode :  

package main

import "fmt"

func main() {
	
	testFilter := filter
	messageFiltering("Ahyar", "Bro..", testFilter)
	messageFiltering("Ahyar", "Aduh", testFilter)

	filterTime := timeFilter
	sayTime(7, filterTime)
	sayTime(15, filterTime)
	sayTime(21, filterTime)
}

Kode di atas, terdapat dua bagian utama. yaitu filter pesan dan waktu. Kedua fungsi tersebut menggunakan fungsi yang di oper sebagai parameter.

Filter Pesan

func messageFiltering(from string, message string, filterMessage func(string) string) {
	fmt.Println("from :", from)
	fmt.Println("message :", filterMessage(message))
}

func filter(message string) string {
	if message == "Aduh" || message == "Aishh" {
		return "Oppss"
	}
	return message
}

Pada fungsi messageFiltering, harus menerima 3 buah parameter : 

  • from : pengirim pesan
  • message : isi pesan
  • filterMessage : fungsi untuk memfilter pesan dari pengirim pesan
Sedangkan, fungsi filter sendiri memiliki logika sederhana untuk mengubah kata kata yang tidak boleh di kirim menjadi kata "Opps" jika pesan tersebut tidak pantas untuk di kirim. Maksudnya, jika message dari pengirim pesan mengandung kata "Aduh" atau "Aish", maka pesan tersebut akan di ganti menjadi "Opps"

Filter Waktu

type FilterTime func(int) string

func sayTime(time int, filterTime FilterTime) {
	println(filterTime(time))
}

func timeFilter(time int) string {
	if time >= 6 && time <= 11 {
		return "Good Morning"
	} else if time > 11 && time <= 18 {
		return "Good Afternoon"
	} else if time > 18 && time <= 24 {
		return "Good Night"
	}
	return "No Time"
}

Pada bagian ini, fungsi sayTime menerima dua buah parameter, parameter pertama untuk menerima waktu, dan parameter kedua adalah fungsi untuk melakukan filter sesuai dengan waktu : 

  • Antara pukul 6 hingga 11, pengguna akan mendapatkan output "Good Morning"
  • Dari pukul 11 hingga 18, pengguna akan mendapatkan output "Good Afternoon"
  • Dari pukul 18 hingga 24, pengguna akan mendapatkan output "Good Night"

Jika anda menjalankan full code di atas, maka akan terdapat output di layar seperti di bawah ini : 

from : Ahyar
message : Bro..
from : Ahyar
message : Oppss
Good Morning
Good Afternoon
Good Night

Kesimpulan

Menggunakan Function as Parameter di bahasa pemerograman golang dapat memungkinkan kita untuk membuat kode lebih modular dan lebih fleksibel. Bisa di lihat pada contoh kode di atas bagaimana fungsi messageFiltering dapat melakukan filtering pesan dari pengguna dan fungsi sayTime memberikan respon salam tepat waktu berdasarkan waktu yang dikirim pada parameter pertama. 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 :

Anonymous Function dan Higher-Order Function Dalam Golang

Posting Komentar