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 errorValores 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.Fatalo 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
- Fundamentos y firmas de funciones
- Múltiples valores de retorno
- Funciones variádicas
- defer, funciones anónimas y cierres