← Kembali ke kursus
Pelajaran kursus · Go
Pelajaran 16

Fungsi

Parameter, nilai balik ganda, dan fungsi variadic.

Pahami konsepnya

Fungsi mengemas langkah yang bisa dipanggil ulang. Parameter dan tipenya ditulis di dalam tanda kurung, sedangkan tipe nilai balik ditulis setelahnya: func jumlah(a, b int) int. Fungsi tanpa nilai balik tidak perlu menuliskan tipe balik sama sekali.

Go dapat mengembalikan beberapa nilai sekaligus — func bagi(a, b int) (int, error) — dan pola inilah yang dipakai hampir seluruh pustaka standar untuk melaporkan kegagalan. Nilai balik pun bisa diberi nama; variabelnya sudah tersedia di dalam fungsi dan return polos cukup untuk mengembalikan semuanya.

Parameter variadic (angka ...int) menerima seberapa pun argumen saat dipanggil, lalu berubah menjadi slice biasa di dalam fungsi. Ia wajib menempati posisi terakhir, dan slice yang sudah ada bisa dikirim utuh dengan akhiran ....

Coba contoh kode

package main

import "fmt"

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

func main() {
    fmt.Println(jumlah(2, 4, 6))
}

Pemanggilan jumlah(2, 4, 6) mengemas tiga angka menjadi slice []int{2, 4, 6} di dalam fungsi. range menyusurinya sementara _ membuang indeks yang tidak dipakai; total dirangkum dan dikembalikan sebagai hasil akhir. Panggil dengan angka berbeda, atau kirim slice utuh dengan jumlah(data...), untuk merasakan kedua bentuknya.

Nilai balik ganda bernama

func minMax(angka []int) (min int, max int) {
    min, max = angka[0], angka[0]
    for _, n := range angka[1:] {
        if n < min {
            min = n
        }
        if n > max {
            max = n
        }
    }
    return // return polos: bawa min dan max
}

func main() {
    kecil, besar := minMax([]int{7, 2, 9, 4})
    fmt.Println(kecil, besar) // 2 9
}

Karena nilai balik diberi nama (min dan max), keduanya sudah tersedia sebagai variabel lokal dan return polos mengembalikannya sekaligus. Pemanggil menampung keduanya dalam dua variabel — pola yang sama dipakai fungsi standar seperti os.Getpid.

Latihan singkat

Uji: lengkapi statistik agar memanggilannya dengan (7, 3, 9, 5) mencetak persis `9 6` (maksimum, rata-rata).