0Pricing
Go Academy · Lección

Múltiples valores de retorno

Devolución de tuplas y el patrón de error

Múltiples valores de retorno es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

¿Por qué varios valores de retorno?

Las funciones de Go pueden devolver varios valores, lo que elimina la necesidad de parámetros de salida o excepciones. El patrón más habitual consiste en devolver un resultado y un error:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

Gestión de varios valores de retorno

La función que realiza la llamada recibe todos los valores de retorno como una tupla. Use _ para descartar los valores que no necesite:

result, err := divide(10, 3)
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

value, _ := divide(8, 2) // discard error

Valores de retorno con nombre

Los valores de retorno pueden tener nombre, lo que los convierte en variables dentro de la función:

func minMax(nums []int) (min, max int) {
    min, max = nums[0], nums[0]
    for _, n := range nums[1:] {
        if n < min { min = n }
        if n > max { max = n }
    }
    return // naked return
}

Retornos desnudos

Un return sin argumentos devuelve las variables de retorno con nombre. Utilícelo con moderación: solo en funciones cortas cuyos nombres sean autoexplicativos:

  • Funciones cortas: aceptable
  • Funciones largas: perjudica la legibilidad; prefiera los retornos explícitos

El patrón (valor, error)

El patrón canónico de gestión de errores en Go:

func readConfig(path string) (Config, error) {
    data, err := os.ReadFile(path)
    if err != nil {
        return Config{}, fmt.Errorf("read config: %w", err)
    }
    var cfg Config
    return cfg, json.Unmarshal(data, &cfg)
}

Nunca ignore los errores

Ignorar errores con _ es peligroso. Prácticas recomendadas:

  • Compruebe cada error, a menos que tenga un motivo específico para no hacerlo
  • Envuelva los errores con contexto mediante fmt.Errorf("op: %w", err)
  • Utilice log.Fatal o panic solo en los límites del programa, no en lo profundo de las bibliotecas

Retornos de tres valores

Algunas funciones devuelven tres valores, aunque es menos habitual:

func parseIPPort(s string) (ip string, port int, err error) {
    // ... parsing logic
    return
}

Devolver structs frente a varios valores

Cuándo devolver un struct en lugar de varios valores:

  • 2 o 3 valores estrechamente relacionados: puede devolver varios valores
  • 4 o más valores o campos opcionales: utilice un struct
  • Patrón (valor, error): utilice siempre varios valores

Asignar a variables existentes

Utilice = (no :=) al asignar valores a variables ya declaradas fuera de la llamada:

var cfg Config
var err error
cfg, err = loadConfig()
if err != nil { ... }

Varios retornos en el encadenamiento de métodos

Go no admite encadenar métodos directamente sobre varios valores de retorno (a diferencia de Result.map en Rust). Utilice variables intermedias para gestionar los errores en cada paso:

data, err := fetchData(url)
if err != nil { return err }
parsed, err := parseData(data)
if err != nil { return err }
return save(parsed)

Comprobación rápida

¿Qué hace un retorno desnudo en Go?

Resumen: varios valores de retorno

Los retornos múltiples son una convención fundamental de Go:

  • Las funciones pueden devolver varios valores en una lista entre paréntesis
  • El patrón (valor, error) aparece en todas partes: compruebe siempre el error
  • Las variables de retorno con nombre permiten usar retornos desnudos (utilícelos con moderación)
  • Utilice _ para descartar los valores que no necesite
  • Prefiera varios retornos a los parámetros de salida para obtener API más limpias

A continuación: funciones variádicas.

Preguntas frecuentes

¿La lección «Múltiples valores de retorno» es gratis?

Sí — el texto completo de «Múltiples valores de retorno» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Múltiples valores de retorno»?

Devolución de tuplas y el patrón de error Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Múltiples valores de retorno»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos y firmas de funciones
  2. Múltiples valores de retorno
  3. Funciones variádicas
  4. defer, funciones anónimas y cierres
← Volver a Go Academy