Bueno me tocó el turno de hablar de las funciones las funciones engobe vamos a ver que tenemos dos capítulos
dedicados a funciones uno para ver lo básico que es este capítulo vamos a ver distintos tipos de formatos
de funciones y luego vamos a tener un capítulo dedicado a funciones anónimas y a Clausius engobe que
vamos a ver cómo se maneja y cuál es la utilidad que podemos darle a ese tipo de función.
Yo ya he creado mi carpeta ejerceré 5 Le he creado mi punto y he puesto lo habitual para que no perdamos
tiempo con esto.
Ustedes tendrían que hacer esto y vamos a empezar a trabajar.
He cambiado un poquito el tamaño de letra para ver si ustedes lo pueden ver mejor.
Quiero que sea bastante legible y lo podríamos agrandar más pero como vamos a meter mucho código en
las clases que van a ir viniendo no conviene agrandar mucho más la letra.
Vamos a ver la primer variante de funciones ustedes saben que por lo que hemos dicho las funciones son
todo engo todo se hace con funciones no existen los métodos y los métodos son funciones en sí misma
que solamente no devuelven ningún valor.
Vamos a ser un ejemplo muy sencillo vamos a ir de menor a mayor y vamos a hacer una función por fuera
de Maine que se va a llamar función 1 vamos a recibir un solo valor número de tipo entero y esto va
a devolver otro ente fíjense lo que es la estructura de una función dónde tiene la palabra reservada
Fondec luego el nombre de la función luego los parámetros que podría o no recibir parámetros yo aquí
podría directamente obviarlo pero no es el caso y luego de los parámetros lo que viene.
Lo que hay que indicarle es cuál va a ser la lista de tipos de valores que vamos a devolver en este
caso vamos a devolver solamente un número entero.
Recuerden que habíamos mencionado que en GoW es posible retornar más de un tipo de valor lo vamos a
ver en este mismo capítulo con ejemplos ok bueno ahora tenemos ya nuestra función.
Recuerden lo de las llaves en la misma línea y ya tenemos listo nuestra función para comenzar a escribir
el código lo que vamos a hacer en esta función es simplemente hacer un ratón.
Ese es el comando gains que usamos en funciones para devolver el valor el resultado y vamos a devolver
número multiplicado por dos muy bien.
Ahora quién me voy a tener que llamar a uno pero lo voy a hacer dentro de un Prin y voy a ser que uno
voy a enviarle un 5 y eso lo voy a mandar por plantas.
Esta instrucción va a llamar dentro a la función uno le va a mover el parámetro de 5 internamente 5
lo va a multiplicar por 2 y me lo va a devolver de tipo entero el resultado.
Ese resultado es el que se va a mostrar en print LN.
Vamos a grabar nuestro pequeño programa ya estamos en la consola parados en ejerceré 5 y vamos a hacer
un GOW rán 20.2 y esto me va a devolver un 10 perfecto hasta ahí.
Es una simple función.
No hay mucha complejidad aquí dentro obviamente en una función real ustedes van a colocar mucho código
o la funcionalidad que ustedes quieran.
Vamos a ver otro ejemplo vamos a copiar esta función vamos a pegarla aquí y la vamos a llamar 2.
Esta función se llama 2 porque me va a devolver dos parámetros me va a devolver dos parámetros y aquí
yo voy a devolver un volear.
Fíjense en cómo va esto y aquí me va a dar error porque yo no puedo colocar una lista suelta de parámetros
no puedo colocar una lista suelta de parámetros de retorno sino que tengo que usar nuevamente los paréntesis.
Yo puedo hacer esto porque solamente devuelvo un entero ahí no me exige los paréntesis pero sí voy a
devolver una lista de tipos de datos.
Voy a tener que usar los paréntesis.
Entonces tengo dos conjuntos de paréntesis los de entrada y los de salida y aquí lo que voy a hacer
es si un número es igual a uno entonces se me mezclan los lenguajes C Sí números igual a uno.
Voy a ser un ratón de Le voy a mover un cinco coma Fours por él.
Voy a retan diez coma tres.
No hay una lógica en esto.
Yo no estoy explicándole lógica esto es simplemente para que ustedes vean cómo es la sintaxis de la
función.
No se fijen en cuál es la lógica de evaluar si números igual a uno no lo que quiero que vean es cómo
van a ustedes poder jugar con las distintas salidas de variables y de tipo de datos.
Vamos a colocar aquí vamos a colocar aquí qué es lo que vamos a colocar aquí vamos a tener que mostrar
mostrar los resultados.
Ahora yo no puedo hacer un simple print LN porque por qué no me está devolviendo un solo valor.
Me está devolviendo dos.
Entonces yo voy a tener que crear aquí una variable o dos variables donde voy a grabar los resultados
y esta es una novedad lo que nos mete en un mundo en un paradigma muy diferente a lo que hasta ahora
hemos conocido.
Entonces yo voy a crear aquí una variable número y le voy a decir Koma y voy a grabar otra variable
de tipo Estado y le voy a decir que las tiene que inicializar con el resultado de la ejecución de la
función.
Cuando yo le mando por ejemplo un qué es lo que está haciendo aquí.
Me está creando una varie me está creando dos variables porque mi función devuelve dos valores dos valores
que me van a permitir crear dos Baleares variables diferentes.
Ahora las estoy creando de esta manera las estoy creando inicializar dándolas con el resultado de una
función.
Ahora yo aquí voy a poder colocar FFT print LN de número y voy a poder hacer.
Es muy molesto a estas ayudas.
Otro print de Estado se entiende vamos a grabar vamos ejecutar y nosotros tenemos aquí que el resultado
fue cinco y que fue Fours el Estado nuestro número vale cinco y el resultado es fours.
Por qué.
Porque aquí hemos puesto un gif donde sí número igual a uno tiene que retornar 5 y fours.
Ahora qué ocurre si aquí yo coloco por ejemplo un 2 cuando corramos esto el resultado va a ser diferente
ahora me dice que el resultado es 10 y el Estado pasó a ser Trough.
Esto me permite este ejemplo tonto vamos a decirlo como es es un ejemplo muy tonto porque a nivel funcional
no me sirve de nada pero me da una idea de lo que yo voy a poder hacer en código en programación donde
llamo a una función y voy a poder recibir una lista interminable de parámetros y de variables y de valores
que me van a servir luego para la ejecución de mi código.
Yo aquí podría seguir la lista con comas separada y devolver otros números enteros poder devolver otros
julianos cadenas de texto.
Voy a poder devolver lo que yo quiera y esto simplemente este ejemplo para que ustedes vean que no solo
los parámetros de entrada son variables sino que los parámetros de salida también vamos a ver otra variante
aquí yo por ejemplo vamos a ejecutar nuevamente el número uno pero yo aquí podría por ejemplo entre
paréntesis decirle que lo que el parámetro de salida lo llamo Z es una variante aquí podría poner que
Z es igual a número dos y aquí podría retornar directamente nada al retornar nada pero previamente su
A.Z. le asigne un valor.
Vamos a ver que nuestro primer ejemplo donde le muevo cinco me va a seguir mostrando el LNE me va a
seguir mostrando este 10 voy a ejecutarlo y aquí tenemos nuestro 10 inicial.
Esta es una variante a lo que habíamos visto antes.
Ustedes les pido que coloquen pausa vayan copiando el código vayan jugando con esto y lo que vamos a
ver ahora lo que vamos a ver ahora como digamos como último ejemplo de funciones vamos a ver un ejemplo
muy muy importante algo que tienen que aprender que es muy importante que son los parámetros variables
que son los parámetros variables son parámetros dinámicos donde yo no sé el número de parámetros de
entrada.
Esto es algo muy útil Coinc cementado Goh y que sirve muchísimo porque hay una falencia que tiene GOW
que no tiene sobrecarga de funciones.
A diferencia de otros lenguajes como puede ser el César o todo el pum pum Tonet como puede ser Java
en GOW no existe la sobrecarga de funciones o sobrecarga de métodos donde podemos escribir el mismo
método en veces con diferentes tipos de parámetros de entrada y esto es muy útil en programación.
La verdad que GOW no lo ha implementado tendrán sus razones pero la sobrecarga de funciones y de métodos
es algo muy útil porque uno permite que uno ejecute distinto tipo de código llamando al mismo método
pero dependiendo el parámetro que está pasando va a ser una cosa o la otra.
GOW no lo tiene implementado.
Lo que sí tiene implementado es el número variable de parámetros vamos a hacer una función por ejemplo
la vamos a llamar cãlculo y vamos a decirle que recibe números.
Vamos a colocarlo en el singular y le vamos a decir que recibe números de tipo entero pero no sabemos
cuántos aquí sí.
Si yo coloco esto lo que estoy diciendo es que lo que estoy recibiendo es solo un parámetro.
Vamos a ver que podemos recibir parámetros variables cómo se maneja esto antes del tipo de dato le colocamos
3 puntos.
De esta manera lo que sé lo que le estoy diciendo a las funciones vas a recibir parámetros enteros pero
no te puedo indicar cuántos de entonces hay que darle un tratamiento especial.
Vamos a abrir nuestra llave internamente vamos a ser un ejemplo vamos a definir una variable por ejemplo
total le vamos a grabar un cero y lo que vamos a hacer es un favor vamos a hacer un favor donde vamos
a evaluar un rango el rango de que el rango de parámetros que he recibido vamos a ver una nueva instrucción
que rango donde yo voy a iterar por cada parámetro que he recibido vamos a hacer el código y lo vamos
a comprar.
Voy a hacer un favor voy a poner este guión bajo ahora se los voy a explicar voy a llamar una variable
de tipo núm y le voy a decir que esa variable va a recibir el valor de número.
Voy a explicar esto.
La función Rann o el comando o la instrucción rán me devuelve siempre siempre dos valores lo que hace
estas opciones me toma un rango un rango de parámetros lo que coloque a la derecha tiene que ser una
lista un vector se usa mucho en vectores cuando veamos el capítulo de vectores vamos a ver que cuando
nosotros creamos nuestros vectores podemos hacer un favor de todos los elementos del vector y para eso
se usa el rango el rango de todos los elementos que tengo en mi lista de números.
En este caso al ser parámetros variables lo convierte en una lista en una lista en memoria y lo que
hace esta función me permite iterar por cada uno de sus elementos.
Ahora muy bien cuando yo ejecuto el rank esto lo que me devuelve es se posiciona en el elemento correspondiente
que tiene que evaluar y siempre devuelve dos valores así como vimos aquí que hay funciones que pueden
devolver más de un tipo de dato Run es una función que devuelve es una instrucción porque fíjense que
no se usan los paréntesis es una instrucción de Goh que devuelve siempre dos valores el primer valor
que devuelve es el número de elemento me dice si es el elemento 1 2 3.
En este caso yo no necesito ese dato no voy a crear una variable para alojar un dato que no lo voy a
usar engo cuando yo tengo una función o una que me demos me devuelve algún tipo de dato que yo no quiero
usar se puede usar el guión bajo para alojar esa variable.
Hay algo que es muy importante en GOW.
Yo no puedo obviar pasos yo no puedo decirle bueno como no lo voy a usar solamente graba me núm no todos
los parámetros que devuelvan las funciones tienen que ser soportados por el llamado por las instrucciones
del lado izquierdo donde yo voy a alojar si voy a correr esta función y esta función me devuelve 2 parámetros
tengo que tener del lado izquierdo dos variables donde voy a alojar los resultados.
Aquí lo hemos visto muy claro.
Si está esta función que hemos creado llamada 2 devolverá cinco tipos de datos aquí tendría que listar
5 tipos de variables.
Si alguna de esas variables no me interesa en este momento la puedo renombrar con guión bajo el guión
bajo es mira aloja aquí el dato que me devolverá pero no lo voy a usar.
No reserva memoria no ocupa no se hace una aplicación mucho más liviana.
Ustedes tienen que pensar que GoW tiene muchos paquetes muchas librerías y tiene muchas funciones que
me van a devolver resultados y por ahí por la funcionalidad de mi código hay ciertos resultados que
devuelve que yo no quiero manejarlos no me interesa en este caso.
A mí no me interesa saber cuál es el número de elementos no me interesa saber cuál es el número de parámetros
si es el primer número que mandaron.
El segundo quizás en otro código en otra función en el día sí pero en este caso no. Y por eso he puesto
un bajo y un bajo coma num donde Núm.
Si es una variable nueva donde voy a alojar el primer número el segundo número el tercer número voy
a iterar por cada número recibido y en cada uno de ellos voy a hacer una suma total.
Entonces aquí voy a hacer que total es igual a Total más Núm.
Simplemente eso.
Y qué voy a hacer al final cuando yo termine voy a ser un ratón de total.
Aquí me faltó algo porque lo estoy ejecutando como si fuera un método no me está devolviendo nada y
aquí lo que voy a hacer es decirle que va a devolver un tipo entero muy bien.
Vamos a ver esto vamos a aquí vamos a quitar esto para que no se me llene la consola de cosas vamos
a hacer un FNT LN de cálculo a donde yo voy a moverle primero números 5 y un número 46 vamos a copiar
este código cuatro veces aquí voy a decirle que mueve un dos un veinti tres coma cuarenta y cinco coma
sesenta y ocho.
Aquí voy a decirle nada que le mueve 1 nada más.
Aquí voy a decirle que mueve 5 46 17 25 y así sucesivamente.
Y lo que vamos a hacer ahora es grabar fíjense estoy llamando a la misma función con distintos tipos
de parámetros.
Vamos a venir a nuestra consola la vamos a borrar.
Vamos a hacer un borrón de Maine punto y vamos a ver los distintos resultados.
Cuando tengo que mostrar la primera suma de cálculo me muestra 51 138 5 porque le he movido un solo
parámetro y 234.
Eso es lo que hace nuestra función calculo y el primer item.
Nosotros no lo hemos mostrado.
Voy a colocarle una variable item bien y aquí lo que voy a hacer es un jefe de item por ciento de vamos
a colocarle aquí un violín y le voy a colocar que muestre item.
Ahora ya estamos usando el primer parámetro devuelto.
El primer resultado de rango vamos a grabar vamos a correr pero limpiar me está dando un error aquí.
Printed feroeses F Mette apuré y la p siempre mashup son funciones públicas no pueden ser en minúsculas
recuerdan que si es minúscula son privadas y no tengo forma todas las todos los métodos ustedes los
van a encontrar de esta manera.
Bueno aquí lo que hice fue mostrar los cinco elementos.
Vamos a ver más arriba.
El primero llega a mostrar solamente el Item 1 0 y 1.
Fíjense lo que pasa que me está super me está superponiendo el F.
Yo aquí tendría que haberle agregado agregarle para que se vea mejor un Newland porque se me está superponiendo
los números.
Vamos a grabar vamos a venir aquí L.S. para venir aquí a veces uno los dedos funcionan más rápido que
vamos a venir aquí y aquí tenemos el primero me meterá entre el ítem cero y el uno.
Recuerden que los lenguajes de programación orientados a C todos los elementos de un vector siempre
comienzan con el cero en parámetros lo mismo.
Lo que está haciendo en lenguaje aquí es convertir a esta lista de parámetros en un vector interno en
memoria y luego lo voy a manejar con el rango y tercero y enuno y me devuelve el resultado 0 1 2 3.
Aquí tengo cuatro parámetros me devuelve 138 aquí tengo siete parámetros y me devuelve el 234.
Bueno esto es básicamente lo que ustedes tienen que tener en cuenta de funciones.
Vimos una función simple que devuelve un entero luego la hemos transformado para ver que yo a ese parámetro
le puedo poner un nombre por ejemplo Z para para qué.
Para poder interactuar dentro de la función con él con su nombre de variable y hacer operaciones y luego
con un simple ratãn me va a devolver el valor de z.
Luego hemos tenido una un ejemplo donde hemos devuelto dos parámetros dos parámetros de respuesta y
esto ha sido un ejemplo simple pero nos ha permitido ver cómo funciona algo con el tema de los parámetros
de respuesta variables y aquí tenemos un ejemplo más nutrido que tiene que ver con los parámetros de
entrada variables donde yo voy a poder iterar en un rango de todos los parámetros que reciban los cuales
yo desconozco en el código no tengo manera de saber qué cantidad de números enteros me está enviando
y vemos un código de ejemplo de cómo resolverlo aquí puede ser una lista de enteros puede ser una lista
de strings puede ser una lista interminable.
Bueno vamos a ir al próximo capítulo y vamos a meternos en el mundo de las funciones anónimas y los
Yours en Go.