package main

import (
	"errors"
	"fmt"
)

// bagi memakai named return values hasil dan err.
func bagi(a, b int) (hasil int, err error) {
	if b == 0 {
		err = errors.New("pembagi tidak boleh nol")
		return // naked return: mengirim hasil=0 dan err.
	}
	hasil = a / b
	return // naked return: mengirim hasil dan err=nil.
}

// bungkus menaikkan nilai kembalian lewat defer.
func bungkus(angka int) (hasil int) {
	defer func() {
		hasil += 100
	}()
	hasil = angka * 2
	return
}

func main() {
	hasil, err := bagi(12, 3)
	fmt.Println(hasil, err)

	hasil, err = bagi(12, 0)
	fmt.Println(hasil, err)

	fmt.Println("bungkus(5) =", bungkus(5))
}
