Bueno tocó el turno de las variables.
Vamos a ver todo lo que tiene que ver con variables en GOW lo que hice para ir adelantando y no tener
que escribir siempre lo mismo creé una carpeta de ejercicios 0 2 dentro de la carpeta hago y creé mi
main.
Punto.
Luego puse el pacas el import y nuestra función main.
Vamos a ver el tema de las variables en Go.
Existen tres tipos de variables las variables numéricas las variables de tipo string y las variables
booleanas.
Luego vamos a ver que hay estructuras vectores pero básicamente los tipos de variables que vamos a manejar
en gov son estos tres tipos cada uno de estos tipos tienen subdivisiones.
Por ejemplo las variables numéricas tienen las enteras tienen las enteras sin signo tienen las flotantes
son las tres las tres grandes divisiones que tenemos en las variables numéricas.
Vamos a ver primero cómo se declaran las variables recuerden que es un lenguaje tipado y nosotros tenemos
que indicar cada variable de qué tipo es.
Luego vamos a ver las características que tienen cada una de las variables y sobre todas las características
que tiene Goh para el manejo y las restricciones que nos pone con las variables.
La manera de crear una variable hayuna hay varias.
Una de las maneras es desde afuera o desde adentro de una función es colocando la palabra reservada
var por ejemplo número y aquí podemos decirle que es una variable entera sin punto y coma sin nada.
Así de esta manera nosotros ya estamos creando una variable podemos poner bar texto string de tipo String.
Luego tenemos los por ejemplo las booleanas que se escribe así Bul y estos son los tres tipos de datos.
Vamos a ver que dentro de los numéricos tenemos más tipos de datos.
Por ejemplo tenemos los float de 32 tenemos los float de 64 bits en cuanto enteros tenemos muchos enteros
tenemos o enteros de 8 bits enteros de 16 32 y 64 y como los enteros pueden ser consigno sin signo si
nosotros queremos trabajar exclusivamente con tipos de datos sin signo.
Tenemos unos tipos de datos enteros que empiezan con la letra Ubu que es para manejarnos sin signos.
Entonces tenemos Ansip entero genérico el de 16 el de 32 el de 64 el de y el de 8 bit.
Esto es para manejar todos los tipos de enteros sin signo.
Bueno estos son los tipos de datos ya vimos cómo podemos crearlos.
Hay otras maneras de crear variables.
Este bar también lo puede manejar dentro de la función por ejemplo número 2 del tipo entero.
La diferencia es que todo lo que yo estoy sesteando afuera lo que estoy creando afuera me va a servir
como para ser usado dentro de todas las funciones que maneje dentro del paquete.
Si yo las declaro dentro de Maine esta variable va a tener el Escofet solamente dentro de la función
main.
Esa es la diferencia de crearlo afuera o adentro hay otra manera de crear variables donde no hace falta
usar la palabra palabra reservada Bar y es por ejemplo número 3 vamos a poner número 3 con la asignación
con dos puntos igual de un número.
Por ejemplo aquí no hace falta ni decirle que se entero ni hace falta usar el bar.
Esto lo que hace es que GOP se da cuenta que en base al valor que le estoy moviendo automáticamente
me crea una variable de tipo entera.
Esta asignación la puede usar una sola vez por variable.
Aquí no puedo decirle que el número 3 es igual a 15.
Por qué.
Porque me va a dar un error si yo lo grabo me va a dar un error y me dice que no encontró una nueva
variable en el lado izquierdo del dos puntos igual tiene que ser una nueva variable no puede usar una
variable que ya definí anteriormente.
Si yo quiero moverle un nuevo valor a Número 3 tengo que quitar el 2 puntos.
Ahora si está sin ningún tipo de restricción vamos a agravarlo y ahora se borró el error que me está
dando no es un error en sí recuérdenlo de las buenas prácticas me dice que los declare pero no lo sé
no me permite me da me da error no me lo va a permitir compilar y ejecutar no asume que yo declare variables
que no usen entonces luego las tengo que usar para darle validez a lo que estoy haciendo.
La manera más fácil de crear variables es encadenadas.
Por ejemplo donde yo puedo aquí ya definir cuatro variables tres variables vamos a quitar esto porque
ahí sí va a dar error ahora el error que va a dar es que no las estoy usando pero no me da error de
que está mal lo que estoy haciendo.
Fíjense declarado y no usado pero no me dice que lo que estoy haciendo está mal.
Me dice que va a tener que usarlas.
Fíjense me permite encadenar esto de tal manera de que yo pueda definir la variable.
Ahora fíjense en lo que voy a hacer ahora tengo yo puedo definir y declarar el valor de variables todo
en una sola línea.
Puedo decir que por ejemplo número dos es igual a dos pero también puedo decirle que Número Dos Número
Tres números cuatro es igual a dos o algo mucho más complejo.
Puedo decirle que es igual a dos coma cinco coma sesenta y siete y lo que va a hacer es al primer número
le va a mover el 2 al segundo número le va a mover el 5.
Y al tercer número le va a mover el 67.
Esto es válido en GOW me permite crear ya le asigna un tipo de variable y mover distintos valores a
las distintas variables y es mucho más complejo todavía.
Yo puedo ponerle aquí texto voy a definir una variable texto y aquí puedo decirle que este es mi texto
vamos a mover vamos a mostrar esto por pantalla vamos a poner FFT punto print vamos a mover primero
tengo que darle entera y aquí vamos a mostrar números 4 y aquí vamos a mostrar tres textos muy bien
vamos a borrar esto que está dando error y vamos a ejecutar nuestro programa vamos a la terminal nos
vamos a vamos a hacer hundir para que veamos que tenemos muy bien tenemos nuestro punto rojo ahora vamos
a hacer un gol rán 20.20 y vamos a ver primero me muestra la variable número dos que le asignó un 2
me muestra un 2 luego un número 3 que le asigna un 5 67 para número 4 y texto con esto fíjense lo que
me permite es en una sola línea de código.
Poder crear variables y asignarles valores inclusive cuando las variables son de distinto tipo de variable
hay una cosa muy interesante una restricción bastante interesante y es que Goh no permite que nosotros
movamos una variable de un tipo a una variable de otro tipo.
Por ejemplo supongamos que yo aquí voy a crear una variable llamada moneda de tipo flotante de 32 y
yo quiero que el número 2 sea igual a moneda.
Vamos a asignarle un valor recuerden que todo lo inicializar en cero a eso es algo que no lo aclare.
Cuando nosotros creamos una variable en GOW sea del tipo que sea a diferencia de otros lenguajes donde
le pone nulo el valor nulo porque todavía no le hemos asignado un valor por el solo hecho de crearlas
goulash inicializar en cero si son numéricas en ceros y son Extrem en cadena vacía y si son bullían
las inicializar con fouls y yo aquí vamos a ser por ejemplo de esta variable estátus.
Si yo quiero ver qué valor tiene estátus vamos a ver así muy bien vamos a comentar esto porque aquí
me va a dar los comentarios con doble barra se consiguen vamos a hacer otro comentario aquí porque también
me va a dar error y vamos a ejecutar es muy bien fíjense status y en ningún momento yo le moví un valor
estátus simplemente la definí y al definirla aunque no le haya movido ningún valor Chalá define en fouls
esto es muy útil nos evita tener que lo que hace es convertirse en un lenguaje muy poco verdoso.
Esto significa que vamos a necesitar menos líneas de código y el origen de esto es que realmente la
gente de Google quería un lenguaje con menos líneas de código.
Si no yo hubiera tenido que poner un Ford lo cual es válido pero es digamos es innecesario pues ya lo
hace a no ser que yo aquí quisiera ponerle un Tru.
Esto es válido esto vamos a agravarlo.
De paso aprenden que también se pueden asignar valores de esta manera vamos a correr en nuestro programa
y ahora nuestro estatus pasó a ser otro por qué lo inicializar le puso un Fool's pero yo le forcé un
valor esto es válido esto es válido yo aquí podría haber puesto lo había podido haber encadenado podía
haber hecho esto pero si hago esto no puedo hacer esto y yo ya lo creé aquí no puedo aquí crearlo nuevamente
y ponerle un valor dentro.
En realidad si nos ponemos a pensar yo aquí estoy creando variables que van a tener solamente un Escofet
dentro de Maine.
Entonces eso quiere decir que habla estátus que estoy creando aquí no tiene nada que ver con esta variable
estatus y ahora vamos a hacer la prueba aquí en lugar de tú.
Vamos a poner un foro vamos a correrlo vamos a chequear de que me devuelva un fouls muy bien me devuelven
foll y por fuera de Main voy a poner una función nueva que es mostrar datos.
Luego vamos a saber bien el tema funciones no se preocupen porque el tema funciones es un capítulo aparte
vamos a ver todo lo que podemos hacer con las funciones que es muy interesante cómo Goh maneja las funciones
y aquí lo que vamos a hacer es un Yulin de Star.
Esto por si solo no se va a ejecutar yo voy a tener que ir a mi instruccion función main y voy a tener
que mostrar fijense que aquí ya me aparecen Stadt las funciones aunque sean métodos porque este es un
método porque no devuelve ningún ningún valor las funciones.
Igual hay que llamarlas con los dos paréntesis aquí yo no puedo poner esto no lo reconoce me va a dar
error cuando yo quiera con pillarlo porque siempre fijense aquí el error me dice que fue evaluado pero
no usado lo toma como si fuera una variable como si fuera cualquier cosa.
En cambio yo tengo que colocar los paréntesis vamos a grabar nuevamente y ahora ya no tengo el error
que me daba antes.
Vamos a correr la terminal fíjense que hasta aquí me va a mostrar informe y lo va a repetir va a mostrar
un fork cuando se ejecute.
Esto no va a tomar este estatus de aquí sino que va a tomar este estatus de aquí es otra variable vamos
a correrlo y me parece el primer Fool's porque aquí me muestra este estatus y el segundo es Truc porque
me muestra el de aquí arriba se entiende esto les COV de variables es muy es muy útil pero también es
muy delicado si yo creo y estoy seguro que estátus aquí le movió un valor en realidad al tener un dos
puntos igual lo que estoy haciendo es crear una nueva variable chamada estátus que me va a dar error
si yo aquí por ejemplo hago un bar Tartus de tipo booleano ahí sí me va a dar error porque va a decir
estás creando una variable local de Main llamada estátus y estás creando nuevamente la misma variable
en esta instrucción pero aquí no detecta que haya una inconsistencia porque la trata como una variable
local y no solo la trata como una variable local sino que esta variable no puede ser exportada de fuera
de la función main porque está en minúscula la manera en que maneja las variables privadas las variables
publicas y globales es con la primera letra de la definición de la variable y la primera letra c minúscula
la toma como una variable local inclusive dentro de todo este paquete número puede ser usado pero si
queremos exportar ese paquete para ser usado desde otros paquetes números no va a estar visible cómo
tenemos que hacer desde un paquete cuando sabemos que ese paquete va a ser importado por otros paquetes.
Supongamos que tenemos un paquete llamado funciones matemáticas y dentro de ese paquete tenemos una
serie de funciones matemáticas pero queremos que ciertas variables y ciertas funciones puedan ser accedida
desde otro paquete si no no nos sirven de nada bueno tendríamos que llamar por ejemplo a números si
es la variable que nosotros queremos acceder desde otros paquetes con números en mayúscula.
Esto me habilita Esto habilita a la variable para que sea visible desde otros paquetes y la manera de
exportar es ésta colocamos la letra mayúscula y a partir de ahora si nuestra nuestro punto es importado
de otros paquetes vamos a ver que está visible esta función y vamos a poder acceder a ejecutarla a obtener
valores y demás.
Por ahora tenemos nuestra mostrar estatus en mayúscula y si quisiéramos alguna variable también tenerla.
Por ejemplo texto o status donde preposicionales para que sea visible y otros paquetes las ponemos en
Mayu ok esta es la manera que nosotros nos manejamos con los escupes de las variables es Kop es el alcance
para los que nunca han escuchado la palabra Esco se escribe así como muy bueno muy bien.
Esto es un gran avance de simplificación en lo que tiene que ver con las declaraciones de Go Vamos a
comentar esto porque yo lo que quería mostrarles es esto donde si yo quiero mover a la número dos que
es una variable declarada de tipo entero le quiero mover un flotante.
Vamos a ver qué sucede vamos a grabar y vamos a ver que hay un error me dice que no puedo usar moneda
que es de tipo flotante y convertirla en un entero.
Y ustedes dirán Pero son numéricos.
Cómo no voy a poder mover un numérico al otro no engobe.
No se puede así de manera explícita.
Es uno de los lenguajes más severos con el tipado de variables esto significa que no puedo mover un
flotante un entero o viceversa.
Y no solo eso.
Si yo aquí en vez de flotante pusiera que Sunil de 64 bits y quiero mover moneda y ustedes van a decir
Bueno es un entero contra un entero.
Ahí sí que no va a haber problema.
No no puedo no puedo mover un entero de 64 bits a un entero genérico.
Si yo quiero mover un entero a 64 bits lo voy a tener que mover en una variable entera de 64 bits.
Cómo se hace entonces.
Bueno hay distintas maneras de convertir datos una es por ejemplo encerrando la variable en el tipo
que yo quiero mover.
Entonces si quiero convertir monedas en una enteros simple vamos a grabar lo tengo que encerrar entre
paréntesis y convertirlo entonces aquí estamos viendo algo muy importante los tipos de datos no sólo
son tipos de datos también son funciones engo.
Prácticamente todos son funciones.
Entonces cuando el tipo de dato.
Cuando yo hago esto fíjense que lo pinta de verde lo toma como un tipo de dato.
Cuando yo hago esto lo toma como una función y se escribe de la misma manera.
Ahora si yo ejecuto esto vamos a la terminal.
No me da ningún error y número 2 me lo muestra sin ningún problema.
Esta es la manera de convertir un entero de 64 bits a un entero.
Puede ser una enterás 64 bits puede ser un entero de 32 bits o un entero de 8.
Lo que quiero mostrarles es la manera de mover esto ahora con el resto de los tipos de datos quizás
hay un poquito más de restricciones y yo quisiera por ejemplo yo quiero que el número entero me lo convierta
en texto ahí ya es un poquito más complicado.
No puedo poner string que moneda aquí ya me va a chillar un poco vamos a agravarlo vamos a esperar y
fíjense qué pasó.
Me convirtió en moneda número entero me lo convirtió en texto y cuando yo muestro texto no demuestra
nada.
No es tan simple o sea no me dio error me dejó pasar pero tampoco hizo lo que tenía que hacer.
Entonces hay una serie de funciones que vamos a tener que quizás ya importar otro paquete si no queremos
importar paquetes lo manejamos desde aquí.
Por ejemplo el mismo FME tiene una función por ejemplo ese print F donde yo voy a poder ponerle por
ejemplo aquí voy a poder decirle que esto es de tipo decimal.
Luego voy a darles la lista de todos los verbos esto se llaman verbos entonces esta función me permite
colocar un verbo de conversión y me permite colocar la variable que quiero cambiar en qué me voy a convertir
en.
Siempre me lo convierte en un texto ese printed F me convierte todo texto pero le tengo que decir qué
tipo de parámetro voy a recibir si va a recibir una flecha si voy a recibir un entero un decimal.
Bueno vamos a grabar esto vamos ejecutar y fíjense que ahora ya me convirtió en cero porque moneda tiene
un valor de cero aquí lo tengo moneda tiene un valor de cero es una variable de 64 que yo definí y tengo
cero.
Antes no me mostraba nada con la función Extrem pero ahora me muestra un string que tiene un cero no
me va a poner comillas haga esto que está mostrando aquí es una string.
Esta es una manera de convertir.
Bueno ahí hay otra manera de convertir esto yo sí se los comento hay un paquete hay una librería que
se llama STR com que tiene que ver con un montón de funciones muchas funciones que tienen que ver con
la conversión.
Bueno y cómo se hace entonces para convertir otra usando este STR com.
Vamos a texto es igual a ese punto y aquí vamos a usar una función llamada y tú a mí me aparece primero
porque es la última que yo estuve usando últimamente con los desarrollos que estoy haciendo y que lo
que hace es convertir entero.
Vamos a y a colocón ahí Xiamen me filtra lo que hace es convertir un entero en un texto.
Hay una salvedad que hay que tener en cuenta yo ahora quiero convertir moneda iban a ver que si yo grabo
esto me da un error.
Por qué.
Porque moneda es un dato de tipo entero de 64 bits y esta función que es muy conocida en el lenguaje
C sólo acepta un parámetro de tipo entero genérico que es lo que tengo que hacer aquí encierro moneda
entero.
Me faltó el último paréntesis y ahora no me va a dar error grabo y esto ya me convirtió el entero de
moneda que es un un entero de 64 bits aquí podría suponer que es de tipo flotante y lo mismo me lo va
a convertir igual y me lo convierte en texto.
Ok muy bien esto es básicamente si yo lo rodaremos van a ver que muestra el cero nuevamente.
Muy bien texto me lo está mostrando como un estreno pero en lugar de usar la función string usé esto
que es otra función.
Cuál es la diferencia que STR com tiene muchas funciones para convertir booleanos en estrella.
Para convertir Ansina y demás y me permite hacer muchas cosas con los tipos de datos.
Quizás más adelante haga algún capítulo dedicado.
Lo que pasa es que hay muchos paquetes no da para por cada paquete o cada librería hacer un capítulo
porque si no al Curzon sería interminable lo que les digo es que esto existe.
Les estoy dando un ejemplo de cómo convertir.
Y ustedes pueden jugar con esta función total no.
No cuesta nada probar hacer distintos tipos de conversiones y paseos.
Bueno vamos a ir al próximo capítulo y a seguir aprendiendo todo sobre este maravilloso lenguaje.
El lenguaje.