Menu
CoddyTech

Fungsi Anonim

Pelajaran 9 dari 19 dalam kursus Fungsi dan Pointer di Golang di Coddy.

Yang sudah kita pelajari adalah cara mendefinisikan fungsi dengan nama, lalu saat perlu memanggilnya, kita menggunakan nama tersebut. Namun, ada jenis fungsi lain yang tidak memiliki nama, dan kita menyebut jenis ini fungsi anonim.

Fungsi ini bertindak seperti fungsi sederhana, tetapi memiliki beberapa perbedaan dalam cara kerjanya. Fungsi ini memungkinkan kita mendefinisikan tindakan secara langsung tanpa perlu mendefinisikan fungsi di tempat lain.

Mari lihat contoh cara mendefinisikan fungsi anonim:

b := func(x, y int) int { return x - y }
fmt.Println(b(100, 50))

Di sini kita mendefinisikan variabel b yang menyimpan fungsi anonim untuk melakukan pengurangan. Saat memanggil fungsi ini, kita cukup menggunakan nama variabel b(100, 50).

Kita juga bisa menerima fungsi anonim sebagai hasil dari fungsi lain. Contohnya:

func operation(a int) func(int) int {
    if a == 1 {
        return func(a int) int { return a + 10 }
    } else {
        return func(a int) int { return a * 10 }
    }
}
func main() {
    b := operation(1)
    fmt.Println(b(14))
}

Di sini kita mendefinisikan fungsi biasa bernama operation, dan hasilnya (nilai yang dikembalikan) akan berupa fungsi anonim <strong>func(int) int</strong>, bukan nilai sederhana.

Kita menetapkan nilai kembalian ke variabel b. Karena kita memberikan 1 sebagai parameter ke fungsi operation, blok yang akan dijalankan adalah yang ini:

return func(a int) int { return a + 10 }

Sekarang, saat memanggil fungsi anonim b, kita perlu memberikan nilai integer, misalnya 14.

Hasilnya adalah:

24

Ini adalah hasil perhitungan a + 10 dengan memberikan nilai a sebesar 14(<strong>b(14)</strong>).
 

challenge icon

Tantangan

Mudah

Tulis fungsi anonim yang menerima tiga argumen bilangan bulat.

Jika argumen pertama lebih besar daripada argumen terakhir , kembalikan jumlah semua argumen. Jika tidak, kembalikan hasil perkalian argumen pertama dan terakhir.

Simpan hasil fungsi di dalam variabel bernama result.

Coba sendiri

package main

import "fmt"

func main() {
    // Definisikan fungsi anonim dan tetapkan ke variabel bernama "result".
 
    
    
    // Cetak hasilnya. Jangan ubah bagian ini!
    fmt.Println("Result:", result(2, 3, 4))
    fmt.Println("Result:", result(8, 3, 4))
}

Semua pelajaran di Fungsi dan Pointer di Golang

Latihan sendiri: Compiler Go online