package main

import (
	"fmt"
)

func divide(a int, b int) (int, error) {
	// return a / b, nil
	if b == 0 {
		panic("division by zero!")
	}
	return a / b, nil
}

func test(a int8) {
	if a == 0 {
		panic("a = 0; ")
	}
}

func saveData() {
	fmt.Print("Сохраняем данные; ")
	// ..
}

func main() {

	/*
		Если defer находится выше panic, то сначала
		выполнится defer, а потом паника. Однако, если defer назодится
		ниже panic, то defer не выполнится вовсе.
	*/

	defer saveData()
	fmt.Print("Программа работае; ")
	test(0)
	/*
		var input int
		_, err := fmt.Scan(&input)
		if err != nil {
			fmt.Println("Проверьте типы входных параметров.")
		} else {
			fmt.Println(divide(input, 5))
		}
	*/

	/*
		err := errors.New("my error")
		fmt.Println("", err)
	*/

	/*
		var a, b int
		fmt.Scan(&a, &b)
		res, err := divide(a, b)
		if err != nil {
			fmt.Println("ошибка")
		} else {
			fmt.Println(res)
		}
	*/

}
