Translate

lunes, 16 de octubre de 2023

Las funciones pueden nombrar sus variables de retorno en Go


A los "parámetros" de retorno o resultado de una función Go se les pueden dar nombres y usarse como variables regulares, al igual que los parámetros entrantes. Cuando se nombran, se inicializan con los valores cero para sus tipos cuando comienza la función; Si la función ejecuta una declaración de devolución sin argumentos, los valores actuales de los parámetros del resultado se utilizan como valores devueltos.

Los nombres no son obligatorios pero pueden hacer que el código sea más corto y claro: son documentación. Si nombramos los resultados de nextInt, resulta obvio cuál int devuelto es cuál.


func nextInt(b []byte, pos int) (value, nextPos int) {


Debido a que los resultados con nombre se inicializan y vinculan a un retorno sin adornos, pueden simplificar y aclarar. Aquí hay una versión de io.ReadFull que los usa bien:


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

}