Возвращение результата из функции

Последнее обновление: 20.12.2017

Функции могут возвращать результат. Для этого нужно после списка параметров функции указать тип возвращаемого результата. А в теле функции использовать оператор return, после которого указывается возвращаемое значение:

func имя_функции (список_параметров) тип_возвращаемого_значения {
	выполняемые_операторы
	return возвращаемое_значение
}

Например, мы хотим возвратить из функции сумму двух чисел:

package main
import "fmt"

func main() {
	var a = add(4, 5)	// 9
	var b = add(20, 6)	// 26
	fmt.Println(a)
	fmt.Println(b)
}

func add(x, y int) int {
	return x + y
}

Функция add возвращает значение типа int, поэтому данный тип указан после списка параметров. В самой функции после оператора return указывается возврашаемое значение. При этом данное значение может быть значением переменной, литералом, либо же, как в данном случае, результатом операции или вызова функции. То есть выражение x + y определяет возвращаемое значение.

Поскольку функция возвращает значение, то при вызове функции мы можем получить это значение и передать его переменной:

var a = add(4, 5)	// 9
var b = add(20, 6)	// 26

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

Возвращаемый результат может быть именован:

func add(x, y int) (z int) {
	z = x + y
	return
}

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

func add(x, y int) int {
	var z int = x + y
	return z
}

Возвращение нескольких значений

В Go функция может возвращать сразу несколько значений. В этом случае после списка параметров указывается в скобках список типов возвращаемых значений. А после оператора return располагаются через запятую все возвращаемые значения:

package main
import "fmt"

func main() {
	var age, name = add(4, 5, "Tom", "Simpson")
	fmt.Println(age)	// 9
	fmt.Println(name)	// Tom Simpson
}

func add(x, y int, firstName, lastName string) (int , string) {
	var z int = x + y
	var fullName = firstName + " " + lastName
	return z, fullName
}

Функция add принимает четыре параметра: два числа и две строки. Возвращает число (значение типа int) и строку. Возвращаемые значения указаны после оператора return.

Поскольку функция теперь возвращает два значения, то при вызове этой функции мы можем присвоить ее результат двум переменным:

var age, name = add(4, 5, "Tom", "Simpson")

Первое возвращаемое значение передается первой переменной age, а второе значение передается второй переменной name.

Альтернативный способ передачи переменным результатов функции:

age, name := add(4, 5, "Tom", "Simpson")

И также в даном случае можно было бы использовать именованные результаты:

func add(x, y int, firstName, lastName string) (z int, fullName string) {
	z = x + y
	fullName = firstName + " " + lastName
	return
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850