Multiple Return Values
Salah satu fitur paling khas Go: fungsi bisa mengembalikan lebih dari satu nilai. Ini sangat penting untuk pola error handling di Go.
Sintaks
func bagi(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("tidak bisa bagi dengan nol")
}
return a / b, nil
}
Menerima Multiple Return
hasil, err := bagi(10, 3)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Hasil:", hasil)
}
// Jika tidak butuh error, gunakan _
hasil2, _ := bagi(20, 4)
fmt.Println(hasil2)
Named Return Values
func persegi(sisi float64) (luas, keliling float64) {
luas = sisi * sisi
keliling = 4 * sisi
return // "naked return" — mengembalikan luas dan keliling
}
Pattern: ok idiom
Mirip error pattern, tapi menggunakan boolean:
func cariUser(id int) (string, bool) {
users := map[int]string{1: "Budi", 2: "Sari"}
nama, ok := users[id]
return nama, ok
}
nama, ok := cariUser(1)
if ok {
fmt.Println("Ditemukan:", nama)
} else {
fmt.Println("User tidak ditemukan")
}
Kapan Menggunakan Multiple Return?
- Error handling — Hampir semua fungsi Go mengembalikan
(result, error) - Ok pattern — Mengembalikan
(value, bool)untuk cek keberhasilan - Multiple results — Ketika fungsi secara alami menghasilkan lebih dari satu nilai