A.19. Fungsi Multiple Return

Umumnya fungsi hanya memiliki satu buah nilai balik saja. Jika ada kebutuhan di mana data yang dikembalikan harus banyak, biasanya digunakanlah tipe seperti map, slice, atau struct sebagai nilai balik.

Go menyediakan kapabilitas bagi programmer untuk membuat fungsi memiliki banyak nilai balik. Pada chapter ini akan dibahas bagaimana penerapannya.

A.19.1 Penerapan Fungsi Multiple Return

Cara membuat fungsi yang memiliki banyak nilai balik tidaklah sulit. Tinggal tulis saja pada saat deklarasi fungsi semua tipe data nilai yang dikembalikan, dan pada keyword return tulis semua data yang ingin dikembalikan. Contoh bisa dilihat pada berikut.

package main

import "fmt"
import "math"

func calculate(d float64) (float64, float64) {
    // hitung luas
    var area = math.Pi * math.Pow(d / 2, 2)
    // hitung keliling
    var circumference = math.Pi * d

    // kembalikan 2 nilai
    return area, circumference
}

Fungsi calculate() di atas menerima satu buah parameter (diameter) yang digunakan dalam proses perhitungan. Di dalam fungsi tersebut ada 2 hal yang dihitung, yaitu nilai luas dan keliling. Kedua nilai tersebut kemudian dijadikan sebagai return value fungsi.

Cara pendefinisian banyak nilai balik bisa dilihat pada kode di atas, langsung tulis tipe data semua nilai balik dipisah tanda koma, lalu ditambahkan kurung di antaranya.

func calculate(d float64) (float64, float64)

Tak lupa di bagian penulisan keyword return harus dituliskan juga semua data yang dijadikan nilai balik (dengan pemisah tanda koma).

return area, circumference

Implementasi dari fungsi calculate() di atas, bisa dilihat pada kode berikut.

func main() {
    var diameter float64 = 15
    var area, circumference = calculate(diameter)

    fmt.Printf("luas lingkaran\t\t: %.2f \n", area)
    fmt.Printf("keliling lingkaran\t: %.2f \n", circumference)
}

Output program:

Dasar Pemrograman Golang - Penerapan teknik multiple return

Karena fungsi tersebut memiliki banyak nilai balik, maka pada pemanggilannya harus disiapkan juga banyak variabel untuk menampung nilai kembalian yang ada (sesuai jumlah nilai balik fungsi).

var area, circumference = calculate(diameter)

A.19.2 Fungsi Dengan Predefined Return Value

Keunikan lainnya yang jarang ditemui di bahasa lain adalah, di Go variabel yang digunakan sebagai nilai balik bisa didefinisikan di awal.

func calculate(d float64) (area float64, circumference float64) {
    area = math.Pi * math.Pow(d / 2, 2)
    circumference = math.Pi * d

    return
}

Fungsi calculate kita modifikasi menjadi lebih sederhana. Bisa dilihat di kode di atas, ada cukup banyak perbedaan dibanding fungsi calculate sebelumnya. Perhatikan kode berikut.

func calculate(d float64) (area float64, circumference float64) {

Fungsi dideklarasikan memiliki 2 buah tipe data, dan variabel yang nantinya dijadikan nilai balik juga dideklarasikan. Variabel area yang bertipe float64, dan circumference bertipe float64.

Karena variabel nilai balik sudah ditentukan di awal, untuk mengembalikan nilai cukup dengan memanggil return tanpa perlu diikuti variabel apapun. Nilai terakhir area dan circumference sebelum pemanggilan keyword return adalah hasil dari fungsi di atas.


Ada beberapa hal baru dari kode di atas yang perlu dibahas, seperti math.Pow() dan math.Pi. Berikut adalah penjelasannya.

• Penggunaan Fungsi math.Pow()

Fungsi math.Pow() digunakan untuk memangkat nilai. math.Pow(2, 3) berarti 2 pangkat 3, hasilnya 8. Fungsi ini berada dalam package math.

• Penggunaan Konstanta math.Pi

math.Pi adalah konstanta bawaan package math yang merepresentasikan Pi atau 22/7.