Saya menemukan konsep ini pada bahasa pemrograman Go, tapi setelah saya mencoba-coba bahasa pemrograman Python ternyata juga ada konsep multiple return values. Fitur ini ternyata sangat powerful di beberapa kasus, seperti ketika kita ingin mengembalikan hasil dan error sekaligus dari sebuah function.
Apa itu Multiple Return Values?
Simpelnya, konsep ini adalah sebuah function yang bisa mengembalikan lebih dari satu nilai (values) sekaligus. Ini sangat berguna untuk menghindari penggunaan struktur data tambahan hanya untuk mengembalikan beberapa nilai.
Contoh di Go
Go memiliki built-in support untuk multiple return values. Biasanya digunakan untuk mengembalikan hasil dan error dari sebuah function.
Function dengan Single Return Value
func someFunction() string {
return "someFunction() called"
}
Function dengan Multiple Return Values
func multipleReturn() (string, string) {
return "This function returns", "multiple values"
}
Penggunaan dalam Program
package main
import "fmt"
func someFunction() string {
return "someFunction() called"
}
func multipleReturn() (string, string) {
return "This function returns", "multiple values"
}
func main() {
a := someFunction()
fmt.Println("a:", a)
// Output: a: someFunction() called
b, c := multipleReturn()
fmt.Println("b:", b)
fmt.Println("c:", c)
// Output:
// b: This function returns
// c: multiple values
, d := multipleReturn()
fmt.Println("d:", d)
// Output: d: multiple values
}
Jika hanya menginginkan subset dari nilai yang dikembalikan, gunakan pengidentifikasi kosong (blank identifier) menggunakan tanda underscore (``). Ini akan mengabaikan nilai yang tidak diperlukan.
Contoh Penggunaan Multiple Return Values untuk Error Handling
Salah satu penggunaan paling umum adalah pada function yang bisa gagal, misalnya membaca file:
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("data.txt")
if err != nil {
fmt.Println("Gagal membuka file:", err)
return
}
defer file.Close()
fmt.Println("File berhasil dibuka:", file.Name())
}
Pada contoh di atas, function os.Open
mengembalikan dua nilai: objek file dan error. Kita bisa langsung menangani error tanpa perlu membuat struct khusus.
Kesimpulan
Multiple return values membuat kode lebih sederhana dan idiomatik, terutama untuk error handling dan mengembalikan beberapa hasil sekaligus. Fitur ini juga tersedia di beberapa bahasa lain seperti Python, namun di Go fitur ini sangat sering digunakan dan menjadi bagian penting dari gaya penulisan kode Go.