Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmFnER 247 of 350 menu
◀ ▶

Ранний выход из функции в Go

Давайте теперь будем смотреть, что происходит после команды return. Как только она выполнится, функция закончит свою работу. До строк ниже в этом вызове выполнение уже не дойдет.

В Go команда в том же блоке сразу после return еще и недостижима: компилятор такую программу не собирает. Поэтому после возврата в том же блоке код не пишут.

Если параметр равен нулю, func вернет ноль раньше, чем дойдет до умножения. Для другого числа сработает второй return:

package main import "fmt" func func(n int) int { if n == 0 { return 0 } return n * 2 } func main() { fmt.Println(func(0)) // выведет 0 fmt.Println(func(4)) // выведет 8 }

Это не значит, что в функции должен быть один return. Но в одном вызове выполнится только один из них. В зависимости от параметра сработает либо первый, либо второй:

package main import "fmt" func func(n int) string { if n >= 0 { return "+" } return "-" } func main() { fmt.Println(func(3)) // выведет '+' fmt.Println(func(-3)) // выведет '-' }

Тот же ранний выход возвращает первое положительное из двух чисел:

package main import "fmt" func func(a, b int) int { if a > 0 { return a } return b } func main() { fmt.Println(func(3, 9)) // выведет 3 }

Соберется ли следующий код? Что хотел вернуть автор и что получится, если оставить только первый return?

func square(n int) int { return n res := n * n return res } fmt.Println(square(3))

Что выведет каждый из вызовов fmt.Println в результате выполнения следующего кода:

func func(n int) int { if n <= 0 { if n < 0 { return -n } return 0 } else { return n * n } } fmt.Println(func(10)) fmt.Println(func(-5))

Объясните почему.

Что выведет каждый из вызовов fmt.Println в результате выполнения следующего кода:

func func(n int) int { if n <= 0 { if n < 0 { return -n } return 0 } return n * n } fmt.Println(func(10)) fmt.Println(func(-5))

Объясните почему.

Напишите функцию func с параметром n: если n отрицательное, сразу верните 0, иначе верните n. Выведите результат для 5 и для -3.

Напишите функцию func с параметром n: если n больше 100, верните 100 раньше конца, иначе верните n. Проверьте на 150.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить