Creando funciones con retorno de múltiples valores en Go
Clase 13 de 29 • Curso de Go
Resumen
Para quienes aprenden programación, comprender las funciones que retornan múltiples valores puede ser una gran ventaja. Go es un lenguaje pionero en esto, permitiendo que funciones específicas regresen varios resultados simultáneamente y facilitando tareas complejas sin necesidad de múltiples estructuras adicionales.
¿Qué es el retorno de múltiples valores en Go?
El retorno de múltiples valores en Go es una característica que posibilita a una función regresar más de un resultado. Esto amplía considerablemente la flexibilidad de las funciones, permitiéndote obtener simultáneamente varios datos relacionados a partir de una sola operación.
¿Cómo implementar funciones con valores múltiples en Go?
En Go, para crear una función que regrese múltiples resultados, debes declarar claramente los tipos de retorno, separándolos por comas dentro de paréntesis. Observa este ejemplo:
func valoresMultiples(nombre1, nombre2, apellido string) (map[string]string, map[string]string) {
mapa1 := make(map[string]string)
mapa2 := make(map[string]string)
mapa1[nombre1] = apellido
mapa2[nombre2] = apellido
return mapa1, mapa2
}
Esta función utiliza mapas que emparejan nombres con apellidos, permitiendo un almacenamiento flexible de información estructurada.
¿Qué ventajas ofrece esta funcionalidad?
Utilizar funciones que regresan varios resultados simplifica el manejo de datos complejos:
- Evita la necesidad de crear estructuras adicionales intermedias.
- Reduce complejidad y código necesario para tareas específicas.
- Facilita la lectura, entendimiento y mantenimiento del código.
¿Cómo manejar resultados múltiples en Go?
Para recibir los valores múltiples que retorna una función, Go permite asignar estos resultados directamente a varias variables. Aquí hay un sencillo ejemplo del manejo de los resultados de la función anterior:
mapaPrimerNombre, mapaSegundoNombre := valoresMultiples("Amin", "Miranda", "Espinoza")
fmt.Println(mapaPrimerNombre, mapaSegundoNombre)
¿Qué función tiene el guión bajo (_) en Go?
El guión bajo (_
) en Go sirve para omitir algún valor retornado que no se desea utilizar. Si solo interesa uno de varios valores retornados, esta es una manera eficiente para hacerlo:
_, mapaSegundoNombre := valoresMultiples("Amin", "Miranda", "Espinoza")
fmt.Println(mapaSegundoNombre)
Este ejemplo ignora el primer mapa retornado, utilizando únicamente el segundo valor.
¿Cómo adaptar este concepto a otros lenguajes?
Si bien Go facilita esto directamente, en otros lenguajes como Python y C# se pueden emplear estructuras equivalentes, usando tuplas o arreglos respectivamente para obtener resultados similares:
- En Python, mediante tuplas:
return (valor1, valor2)
. - En C#, utilizando arreglos o estructuras similares.
Aunque la implementación varía de un lenguaje a otro, el principio subyacente es esencialmente el mismo.
Te invitamos a realizar tus propios ejercicios prácticos concatenando cadenas o realizando operaciones que puedan aprovechar esta característica. ¿De qué maneras imaginas usar esta técnica en tus proyectos futuros?