Возвращаемые значения
Функция может отправить значение обратно в вызывающий код. Для этого объявите тип данных возвращаемого значения (int, string и так далее) в сигнатуре функции и используйте ключевое слово return в теле функции.
Синтаксис return
func FunctionName(param1 type, param2 type) type {
// code to be executed
return output
}
Пример возврата значения из функции
Эта функция myFunction() принимает два целых числа, x и y, складывает их (x + y) и возвращает сумму как int.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func myFunction(x int, y int) int {
return x + y
}
func main() {
fmt.Println(myFunction(1, 2))
}
Именованные возвращаемые значения
Go также позволяет дать возвращаемому значению имя.
В этом примере возвращаемое значение называется result и имеет тип int. Поскольку у него уже есть имя, достаточно простого return. Такое использование return без имени переменной называется «голым» return.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func myFunction(x int, y int) (result int) {
result = x + y
return
}
func main() {
fmt.Println(myFunction(1, 2))
}
Сохранение возвращаемого значения в переменной
Вместо того чтобы сразу выводить результат функции, можно сохранить его в переменной для дальнейшего использования.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func myFunction(x int, y int) (result int) {
result = x + y
return
}
func main() {
total := myFunction(1, 2)
fmt.Println(total)
}
Несколько возвращаемых значений
Функция Go не ограничена одним возвращаемым значением: она может возвращать сразу несколько.
Пример
Эта функция myFunction() возвращает два значения: целое число с именем result и строку с именем txt1.
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func myFunction(x int, y string) (result int, txt1 string) {
result = x + x
txt1 = y + ", мир!"
return
}
func main() {
fmt.Println(myFunction(5, "Привет"))
}
Пример
Два возвращаемых значения можно сразу присвоить двум переменным, в данном случае a и b.
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func myFunction(x int, y string) (result int, txt1 string) {
result = x + x
txt1 = y + ", мир!"
return
}
func main() {
a, b := myFunction(5, "Привет")
fmt.Println(a, b)
}
Пример
Иногда вам нужна только часть того, что возвращает функция. Напишите символ подчёркивания (_) вместо значения, которое хотите пропустить. Здесь он отбрасывает первое значение.
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func myFunction(x int, y string) (result int, txt1 string) {
result = x + x
txt1 = y + ", мир!"
return
}
func main() {
_, b := myFunction(5, "Привет")
fmt.Println(b)
}
Пример
На этот раз символ подчёркивания стоит на второй позиции, поэтому второе возвращаемое значение (txt1) игнорируется.
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func myFunction(x int, y string) (result int, txt1 string) {
result = x + x
txt1 = y + ", мир!"
return
}
func main() {
a, _ := myFunction(5, "Привет")
fmt.Println(a)
}