понедельник, 11 мая 2020 г.

Именованные возвращаемые значения в Golang

В Go возвращаемые параметры могут быть названы (иметь имена) и использоваться как обычные переменные. Когда функция возвращается, они используются как возвращаемые значения.

func f() (i int, s string) {
    i = 17
    s = "abc"
    return // то же самое что и return i, s
}

Именованные возвращаемые параметры инициализируются своими нулевыми значениями.

Имена не являются обязательными, но могут послужить хорошей документацией. Правильно используемые именованные возвращаемые параметры также могут помочь сделать код более точным и чистым.

Пример

Эта версия io.ReadFull, взятая из Эффективный Go, эффективно использует их.

// ReadFull читает ровно len(buf) байтов из r в buf. 
// Возвращается количество скопированных байтов и ошибка, 
// если было прочитано меньше байтов.
func ReadFull(r Reader, buf []byte) (n int, err error) {
    for len(buf) > 0 && err == nil {
        var nr int
        nr, err = r.Read(buf)
        n += nr
        buf = buf[nr:]
    }
    return
}

Код является и более простым и понятным, с именованными возвращаемыми значениями, которые правильно инициализированы и привязаны к простому return.


Читайте также:


Комментариев нет:

Отправить комментарий