💬 Можно ли давать имена возвращаемым значениям функции Go?



В отличие от C, Go позволяет называть возвращаемые значения Go-функции. Кроме того, когда такая функция имеет оператор return без каких-либо аргументов, она автоматически возвращает текущее значение каждого именованного возвращаемого значения в том порядке, в котором они были объявлены в сигнатуре.



Следующая функция включена в namedReturn.go:



func minMax(x, y int) (min, max int) {

if x > y {

min = y

max = x

return min, max





Здесь оператор return возвращает значения, сохраненные в переменных min и max. Обе переменные определены в сигнатуре, а не в теле функции.



    }



min = x

max = y

return

}





А здесь он эквивалентен return min, max. В его основе — сигнатура функции и использование именованных возвращаемых значений. При выполнении namedReturn.go мы получаем такой вывод:



$ go run namedReturn.go 1 -2

-2 1

-2 1