Оператор return
Оператор return в Go завершает выполнение текущей функции и передает управление обратно в вызывающий код. Если функция объявлена с типом возвращаемого значения, оператор return должен возвращать значение соответствующего типа. Для функций, которые возвращают несколько значений, return возвращает все значения в порядке их объявления. В случае функций без возвращаемого значения (void) оператор return может использоваться для досрочного выхода без указания значений.
Синтаксис
return [значение_1, значение_2, ...]
Пример с одним возвращаемым значением
Давайте напишем функцию, которая вычисляет квадрат числа и возвращает результат:
package main
import "fmt"
func square(x int) int {
return x * x
}
func main() {
res := square(5)
fmt.Println(res)
}
Результат выполнения кода:
25
Пример с несколькими возвращаемыми значениями
В Go функции могут возвращать несколько значений. Часто это используется для возврата основного результата и ошибки:
package main
import "fmt"
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("division by zero")
}
return a / b, nil
}
func main() {
res, err := divide(10, 2)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(res)
}
}
Результат выполнения кода:
5
Пример с именованными возвращаемыми значениями
В Go можно использовать именованные возвращаемые значения, что позволяет использовать оператор return без указания значений:
package main
import "fmt"
func getPersonInfo() (name string, age int) {
name = "John Doe"
age = 30
return
}
func main() {
n, a := getPersonInfo()
fmt.Println(n, a)
}
Результат выполнения кода:
"John Doe" 30
Пример с досрочным возвратом
Оператор return может использоваться для досрочного выхода из функции в условных конструкциях:
package main
import "fmt"
func checkValue(x int) string {
if x < 0 {
return "negative"
}
if x == 0 {
return "zero"
}
return "positive"
}
func main() {
fmt.Println(checkValue(-5))
fmt.Println(checkValue(0))
fmt.Println(checkValue(5))
}
Результат выполнения кода:
"negative"
"zero"
"positive"
Пример использования return в функции без возвращаемого значения
Для функций без возвращаемого значения оператор return может использоваться без значений для досрочного завершения:
package main
import "fmt"
func printMessage(msg string) {
if msg == "" {
fmt.Println("empty message")
return
}
fmt.Println(msg)
}
func main() {
printMessage("")
printMessage("hello world")
}
Результат выполнения кода:
"empty message"
"hello world"
Смотрите также
-
оператор
func,
который объявляет функции с возвращаемыми значениями -
оператор
if,
который часто используется с оператором return для проверки условий -
оператор
switch,
который также может использовать return для выхода из функции -
оператор
defer,
который выполняется перед фактическим выходом из функции