Ir al contenido principal

Go: declarando funciones(4)

Continuamos con la serie de post sobre Go(lang) y la declaración de funciones.

En ésta ocasión haremos una serie de ejemplos con funciones.

Pero antes, ¿Cuál es la diferencia entre funciones y procedimientos?

  • Un procedimiento no devolverá ningún valor.
  • Una función deberá devolver al menos un valor.

Go(lang) nos permitirá no solo devolver un valor en una función, sino más de dos valores.

func sumaResta(x, y int32) (int32, int32) {
	return (x + y), (x - y)
}

Se puede observar que los valores de regreso son el resultado de la suma y resta.

// Asignamos los valores  a las variables opr1 y opr2
var opr1, opr2 = sumaResta(3, 2) 

Mostramos los resultados en pantalla:

// Imprimimos en pantalla los resultados
fmt.Printf("Suma = %d , Resta = %d\n", opr1, opr2)

Si definimos una función que devuelva más de dos valores:

func sumaRestaMultiplica(x, y int32) (int32, int32, int32) {
	return (x + y), (x - y), (x * y)
}

Como se puede observar tenemos tres operaciones a realizar: suma, resta y multiplicación.

Asignando valores a las variables:

// Asignamos los valores de suma, resta y multiplicación
var sumaF, restaF, multF = sumaRestaMultiplica(3, 4)

Imprimimos los resultados de las operaciones(suma, resta y multiplicación) en pantalla:

fmt.Printf("Suma(3,4) = %d, tipo: %T\n", sumaF, sumaF)     // 7
fmt.Printf("Resta(3,4) = %d, tipo: %T\n", restaF, restaF)  // -1
fmt.Printf("Producto(3,4) = %d, tipo: %T\n", multF, multF) // 12

¿Se podrá devolver valores con distinto tipo? En Go(lang) si se puede. Miremos el siguiente bloque de código:

func multDivision(x, y int) (int, string) {
	if y > x {
		return x / y, "Division"
	} else {
		return x * y, "Multiplicacion"
	}
}

Como se observa, en la función devolvemos una operación de tipo int (multiplicación o división) y una cadena de texto de tipo string. En este caso la cadena devolverá la operación realizada de acuerdo a ciertas condiciones.

Asignamos los valores y los imprimimos en pantalla:

// Asignamos valores 
var valor, operacion = multDivision(x, y)

// Imprimimos en pantalla los resultados obtenidos
fmt.Println("x=", x, "y=", y)
fmt.Printf("Operacion = %v , Resultado: %v\n", operacion, valor)

También podemos devolver un valor sin tener que colocar el return segudo de la variable que tiene el valor a devolver.

func nada(numero int) (z int) {
	z = numero * 3
	return
}

Imprimimos en pantalla el valor:

fmt.Println("Nada(5) = ", nada(5))
fmt.Println("Nada(222) = ", nada(222))

/*
Salida:
Nada(5) =  15
Nada(222) =  666
*/

En este ejmplo definiremos una función que recibirá una indefinida cantidad de parámetros y realizará una sumatoria de los mismos.

func calculo(numero ...int) {
	total := 0
	for _, num := range numero {
		fmt.Println("Numero = ", num)
		total += num
	}
	fmt.Println("Total = ", total)
}

Invocamos la función con distinto número de entradas:

calculo(1, 2, 3, 4)
calculo(1, 2)

/*
Resultado:
Numero =  1
Numero =  2
Numero =  3
Numero =  4
Total =  10
Numero =  1
Numero =  2
Total =  3
Total = 15
*/

Go(lang) tiene ciertas peculiaridades que nos ayudan bastante. En próximos post veremos más ejemplos.

Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...