Множественные результаты
Функция может возвращать любое количество результатов.
В следующем примере функция swap возвращает две строки.
package main
import "fmt"
func swap(x, y string) (string, string) {
  return y, x
}
func main() {
  a, b := swap("hello", "world")
  fmt.Println(a, b)
}
Результат:
world hello
Именованные возвращаемые значения
В Go возвращаемые значения могут быть именованными. В этом случае они расцениваются как переменные объявленные в начале функции.
Эти имена следует использовать для документирования смысла возвращаемых значений.
return без аргументов возвращает именованные возвращаемые значения, что известно как "голый" возврат.
Такой способ возврата значений следует использовать только в коротких функциях, как в представленном здесь примере. В более длинных функциях это может ухудшить читаемость.
package main
import "fmt"
func split(sum int) (x, y int) {
  x = sum * 4 / 9
  y = sum - x
  return
}
func main() {
  fmt.Println(split(17))
}
Результат:
7 10
Читайте также:
