Los tipos de datos en Go

En esta lección introduzco a la noción de tipo de datos y muestro los principales tipos de datos. Go es un lenguaje de programación con tipado fuerte así que todas las variables tienen que ser de un tipo.

Go es un lenguaje de programación tipado. Eso quiere decir que cuando trabajemos con datos, tendremos que indicar de qué tipo es el dato. Esto influenciará las operaciones que podemos hacer con esos datos.

Supongo que alguna vez te habrán dicho que cuando das un número, es importante indicar su unidad. Por ejemplo, en una tienda no es lo mismo 100 gramos que 100 kilogramos, y por esta razón únicamente decir 100 puede resultar confuso o en general puede faltar información.

Con los ordenadores pasa algo parecido. Aunque por dentro todo se resume en ceros y unos, es importante tener una semántica clara que nos permita saber exactamente qué simbolizan esos ceros y unos, si es un precio total, si son cada una de las letras de una dirección URL, o si son cada uno de los píxeles de una imagen que estemos procesando.

En Go, los identificadores van a llevar asociados un tipo de datos. Por ejemplo, el tipo de datos de una variable, e incluso el tipo de datos de una función.

Estos tipos de datos son de muchas clasificaciones. Los hay primitivos y no primitivos. Por ahora voy a empezar con los primitivos porque son más fáciles de entender, y son los que vamos a estar usando por ahora. Iremos viendo los otros tipos a medida que nos hagan falta.

Cadenas de caracteres

Empecemos por las cadenas de caracteres, aprovechando que ya las hemos estado viendo en capítulos anteriores. Una cadena de caracteres es una secuencia de letras que se interpreta de forma literal como un único dato. Por ejemplo, la dirección URL de una página o de un host, un nombre, una dirección postal o la ruta de un archivo del disco duro son ejemplos de cadenas de caracteres.

Escribimos una cadena de caracteres entre comillas, mediante los símbolos ", y entre medias ponemos todas las letras que queremos que Go trate como un único dato. No hará ningún esfuerzo por interpretar lo que hay entre comillas, solamente lo guardará como un todo en la memoria del programa, y si está asociado a una variable, se podrá acceder a ese contenido usando su identificador. Aquí tenemos un ejemplo de cadena de caracteres en Go:

"Soy una cadena de caracteres de Go"

Números

Un número como puede ser el 1, el 4, el -5, el 7.41...

Cuando nosotros declaramos una variable y la marcamos como que su tipo es un número, podemos usarla en cálculos como sumas, restas y multiplicaciones que a menudo usaremos en los algoritmos que tenemos que escribir en nuestros programas o expresiones. Por ejemplo, este dato sería un número:

4.11

Este otro, también:

25

Fíjate que aquí usamos el número tal cual digitando los caracteres comprendidos entre el 0 y el 9. Si acaso, le ponemos un - delante para hacerlo negativo o ponemos un punto para indicar que es decimal. Sin embargo, no lo ponemos entre comillas. Si pusiésemos el número entre comillas, Go se pensaría que es una cadena de caracteres. Las comillas solamente para las cadenas de caracteres.

Número es una terminología que estoy usando por simplificar, pero hay que tener en cuenta que Go entiende números de varias categorías. Cada tipo nos permite guardar números de un tipo u otro.

  • Números enteros. Son números que no tienen parte decimal, y que por lo tanto no tienen coma o punto. No nos valen para guardar números que tengan decimales, pero a cambio los ordenadores los llevan mejor. Por esta razón, si no tenemos que guardar un número con decimales, siempre preferiremos usar un número entero sin más.
  • Números decimales. Todos los números que no sean enteros, es decir, los que sí tienen decimales. Al ordenador se le atragantan un poco, así que aunque los podemos usar en el día a día para escribir programas, es posible que a veces no sirvan para guardar precios y otro tipo de valores críticos donde un error de redondeo pueda suponer un problema económico o de otro tipo.

A su vez, los números pueden ser organizados en:

  • Números con signo: el signo se refiere aquí al - que ponemos al principio de un número para indicar que es negativo. Cuando un tipo de datos es numérico con signo, podemos utilizarlo para representar números negativos.
  • Números sin signo: si el tipo de datos es un número sin signo, no aceptará un número que no sea cero o positivo. Esto puede tener ventajas en algunos casos, ya que si el ordenador no tiene que gastar un bit en indicar si el número es positivo o negativo, el valor que puede almacenar será más grande.

En Go, los números decimales se escriben siempre usando un punto para separar la parte entera de la parte decimal, incluso aunque vivas en un país donde se usa la coma para esta función.

Lógicos (booleanos)

Los valores lógicos se usan para especificar un dato que sólo puede tener dos estados, es decir, es un tipo binario: sí o no; encendido o apagado; activo o inactivo; 1 o 0.

Los tipos de datos lógicos los usaremos, por lo tanto, únicamente para datos que sólo tienen dos modos. Por ejemplo, la luz está encendida o no, el usuario es premium o no...

Los dos únicos datos que puede poseer una variable de tipo lógica son true y false, que por convención suelen representar lo que está bien, correcto, activo, encendido, habilitado... frente a lo que está mal, deshabilitado, apagado, no conectado...

true
false

No podemos sumarlos, ni restarlos ni hacer operaciones matemáticas con ellos, pero a cambio en algunas ocasiones puede ser más eficiente trabajar con valores lógicos si sabemos de sobra que solo va a haber dos posibles estados. Además, cualquier persona que esté trabajando con una variable de este tipo, como verá por su definición que es lógica, sabrá lo que se puede ver venir, y por lo tanto el código será más mantenible.

Lista de reproducción
  1. 1
    Instalar Go
    5 minutos
  2. 2
    Configurar Go en Windows a mano
    4 minutos
  3. 3
    Configurar Go en Linux y MacOS a mano
    5 minutos
  4. 4
    Escribir el Hola Mundo
    11 minutos
  5. 5
    Variables con var
    10 minutos
  6. 6
    Los tipos de datos en Go
    9 minutos
  7. 7
    Variables tipadas e inferencia de tipos
    8 minutos
  8. 8
    Operador := y múltiples variables
    7 minutos
  9. 9
    Constantes
    4 minutos
  10. 10
    Funciones básicas
    6 minutos
  11. 11
    Paso de parámetros a funciones
    7 minutos
  12. 12
    Retorno de funciones
    5 minutos
  13. 13
    Operadores aritméticos
    6 minutos