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) } */ }