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

Именованные результаты в Go

Давайте теперь будем давать результатам имена. Тогда пустой return отдает их текущие значения. Имена пишут в скобках после параметров вместе с типами, а в теле им присваивают как обычным переменным.

Частное и остаток от деления запишем в именованные результаты функции func:

package main import "fmt" func func(a, b int) (q int, r int) { q = a / b r = a % b return } func main() { q, r := func(10, 3) fmt.Println(q, r) // выведет 3 1 }

Команда return без выражений возвращает q и r после присваивания. Имена результатов видны только внутри функции. При вызове по-прежнему передают значения по порядку, без имен аргументов.

Если типы результатов одинаковые и стоят рядом, запись можно сократить. Функция func делит число на две части:

package main import "fmt" func func(n int) (lo, hi int) { lo = n / 2 hi = n - lo return } func main() { a, b := func(10) fmt.Println(a, b) // выведет 5 5 }

Даны числа:

a := 14 b := 5

Напишите функцию func с именованными результатами q и r для деления a на b. Используйте пустой return. Выведите оба значения.

Напишите функцию func с параметром n и именованными lo, hi, где lo равно 0, а hi равно n. Верните пару пустым return и выведите ее для 7.

Скажите, что вернет голый return после присваивания именованным результатам.

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