Все вопросы

14 Функции

Как функция возвращает несколько значений?

В списке результатов пишут несколько типов, чаще всего значение и error. Вызывающий принимает их парой: n, err := parse(raw). Ненужный результат отбрасывают подчёркиванием: _, err := parse(raw).

Имена у результатов необязательны. Именованные результаты (func f() (n int, err error)) удобны в коротких функциях, но в длинных они прячут, что именно вернулось. Явный return n, err читается проще.

Пример

Go

число или ошибка разбора

package main

import (
    "fmt"
    "strconv"
)

func parse(raw string) (int, error) {
    return strconv.Atoi(raw)
}

func main() {
    n, err := parse("42")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(n)

    if _, err := parse("x"); err != nil {
        fmt.Println("второе значение — ошибка:", err)
    }
}