numérico, se deberá explicitar el tipo de destino de la siguiente manera:
var segundos int8 = 30 var horas int horas = int(segundos)
En el fragmento anterior, se indica a Go que el valor de la variable segundos, del tipo int8, se va a copiar en otra variable del tipo int. Aunque es obvio que cualquier valor del tipo int8 (8 bits) cabe en una variable del tipo int (32 o 64 bits), Go obliga a hacer explícita esta conversión.
Si la conversión se hace desde un tipo entero de tamaño superior al tipo de destino, se usan los bits menos significativos del tipo de origen que caben en el tipo de destino.
Si la conversión se hace desde un tipo de coma flotante, se trunca la parte con decimales y se asigna la parte entera. Por ejemplo:
distancia := 12.78 kms := int(distancia)
En el ejemplo anterior, la variable kms tomará el valor 12 (eliminando, sin redondeo alguno, el 0.78 de la variable original).
2.5 CONSTANTES
Una constante es un valor literal al que se le asigna un nombre, que no puede cambiar durante la vida del programa. Su definición es similar a la de una variable, pero reemplazando la palabra var por la palabra const. Por ejemplo:
const Pi = 3.1416
o
const Pi float64 = 3.1416
Cuando se definen múltiples constantes, se pueden agrupar semánticamente bajo la misma directiva const. Por ejemplo:
2.6 BASES DE NUMERACIÓN
Además de la comúnmente usada base decimal (en la que cada dígito puede tomar diez valores distintos, del 0 al 9), Go permite usar otros tipos de bases de numeración según el prefijo que añadamos a cada número (Figura 2.1).
Figura 2.1 Bases de numeración en Go.
Cuando queramos agrupar bloques de dígitos, podemos insertar un guión bajo “_” entre estos. Go no lo tendrá en cuenta a la hora de establecer el valor.
Ejemplos:
productoInteriorBruto := 1_419_000_000_000 bitsAgrupados := 0b_1000_1001_0110
2.7 OPERADORES NUMÉRICOS
Go permite hacer las siguientes operaciones con tipos de datos númericos, por orden de precedencia:
1. Agrupaciones de operaciones, delimitadas por paréntesis.
2. Multiplicaciones, divisiones (operadores * y /), así como el resto de la división entera (o módulo, operador %).
3. Sumas y restas (operadores + y -).
El orden de precedencia hace referencia a qué operaciones se evalúan primero, cuando una expresión compleja engloba múltiples operaciones. Primero, se evalúan las operaciones de mayor precedencia. En caso de múltiples operaciones con la misma precedencia, estas se evalúan según su posición en la expresión, de izquierda a derecha.
Por ejemplo, dada la siguiente expresión:
a := 8 + 3 * (1 + 2) % 5
1. Primero evaluaría la expresión entre paréntesis, ya que es la de mayor precedencia: a := 8 + 3 * 3 % 5
2. Luego evaluaría la multiplicación y el módulo. Al ser de la misma precedencia, primero evaluaría la multiplicación, ya que está más a la izquierda: a := 8 + 9 % 5
3. Y continuaría por el resto de la división entera: a := 8 + 9
4. Siendo la suma la operación de menos precedencia, sería la última en evaluarse: a := 12
Además de los anteriores operadores matemáticos, Go provee los operadores de incremento (++) y decremento (--), que van detrás de una variable que se quiere incrementar o decrementar, respectivamente:
a := 10 b := 20 a++ b--
Después de ejecutar el anterior programa, la variable a contendría el valor 11 y la variable b contendría el valor 19.
A diferencia de otros lenguajes de programación con los que el lector pueda estar familiarizado, los operadores de incremento y decremento no pueden ir dentro de otras expresiones.
2.8 OPERADORES NUMÉRICOS DE COMPARACIÓN
Go permite comparar expresiones numéricas (Figura 2.2). El resultado de una comparación será un bool (true o false). Cuando se mezclan con las operaciones numéricas del apartado anterior, las operaciones de comparación son las de menor precedencia.
Figura 2.2 Operadores de comparación.
2.9 OPERADORES APLICABLES AL TIPO string
El operador + aplicado entre string, retorna un nuevo string con las cadenas concatenadas:
a := "el cocherito" b := "leré" concat := a + “ " + b
En el ejemplo anterior, la variable concat contendría la cadena "el cocherito leré".
Los operadores de comparación también pueden usarse para comparar cadenas de texto.
INFORMACIÓN: Go hará distinción entre mayúsculas y minúsculas, por lo que "HOLA" == "hola" retornará false y "ZZZ" < "aaa" también retornará false, ya que el valor numérico de la Z mayúscula es menor al de la a minúscula.
2.10 OPERADORES LÓGICOS CON bool
Cualquier variable o expresión que retorne un bool puede combinarse con otros booleanos mediante los siguientes operadores lógicos (Figura 2.3), resultando en otros valores booleanos. Cuando se mezclan con las operaciones de comparación del apartado anterior, las operaciones de lógica son las de menor precedencia.
Figura 2.3 Operadores lógicos.
2.11 OPERADORES LÓGICOS A NIVEL DE BIT
Las variables numéricas también pueden verse como agrupaciones de dígitos binarios (bits) con los que podemos realizar las siguientes operaciones, que se aplican tras comparar los bits de igual posición en dos operandos (Figura 2.4).
Figura