Variadic, Closure & Function sebagai Nilai

Parameter ...T, anonymous function, dan closure yang mengingat variable.

Part 10 dari 23 ± 35 menit Gratis

Variadic function

Tambahkan ... sebelum tipe agar function menerima sejumlah argumen. Di dalam function, parameter itu berupa slice.

func jumlah(angka ...int) int {
    total := 0
    for _, n := range angka {
        total += n
    }
    return total
}

fmt.Println(jumlah(1, 2, 3))     // 6
fmt.Println(jumlah())            // 0

Untuk memasukkan slice yang sudah ada, tambahkan ... setelahnya: jumlah(daftar...). Contoh variadic yang kamu kenal: fmt.Println.

Anonymous function

Function tanpa nama, boleh langsung dijalankan:

func() {
    fmt.Println("langsung jalan")
}()

Closure

Closure adalah function yang menangkap variable dari lingkup tempat ia dibuat dan tetap mengingatnya, meski lingkup itu sudah selesai.

func buatPenghitung() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

a := buatPenghitung()
fmt.Println(a(), a(), a())   // 1 2 3

b := buatPenghitung()
fmt.Println(b())             // 1  (count milik b sendiri)

Setiap pemanggilan buatPenghitung() membuat variable count baru, sehingga a dan b tidak saling mengganggu.

Kapan closure berguna?

  • Menyimpan state tanpa struct (penghitung, generator ID).
  • Callback (misalnya handler HTTP).
  • Membuat function "pabrik", mis. pengali(2) yang mengembalikan function pengali-dua.

Function sebagai parameter

func terapkan(angka []int, f func(int) int) []int {
    hasil := []int{}
    for _, n := range angka {
        hasil = append(hasil, f(n))
    }
    return hasil
}

kuadrat := terapkan([]int{1, 2, 3}, func(n int) int { return n * n })
// [1 4 9]

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X