tgoop.com/golangprofi/160
Last Update:
Ответ на «Если в функции есть return, обязательно ли она вернет то, что указано в return?»
Мы привыкли, что обычно, если код внутри функции добрался до return, то на выходе мы получим то, что стоит после return. Но в Go есть интересная особенность: если есть именованный выходной параметр (параметры), то функция вернет последнее его значение, несмотря на то, что написано в return
.package main
Функция вернет в итоге: 95 и 27.
import "fmt"
// Основной метод
func main() {
// функция возвращает два значения
m, d := calculator(105, 7)
fmt.Println("105 x 7 = ", m)
fmt.Println("105 / 7 = ", d)
}
// функция с именованными аргументами
func calculator(a, b int) (mul int, div int) {
defer func() {
mul = 95
div = 27
}()
// здесь простое назначение т.к. инициализация произошла выше
//функция вернет именно эти переменные
mul = a * b
div = a / b
// здесь у вас есть ключевое слово return
return 1, 2
}
BY Golang Юниор
Share with your friend now:
tgoop.com/golangprofi/160