🥇 Tipos de datos

🍿 Go es un lenguaje tipado

Go es un lenguage tipado, lo que lo hace diferente a otros lenguajes como Python, PHP o JavaScript. Los tipos de datos permiten: que los lenguajes y compiladores entiendan como es que deben de operar y procesar los datos. Por ejemplo si utilizamos un campo de tipo número, este nos permitirá realizar operaciones aritméticas sobre el propio valor. Los programas por lo general permiten extender los tipos, agregando a estos nuevas funcionalidades. También permiten que se utilicen algunas librerías para interactuar con los diferentes tipos.

🍿 Diferencias entre el tipado estático y dinámico

Cuando un lenguaje no es tipado, durante el periodo de ejecución un tipo puede cambiar a otro.

1 + "a"
"1a"

En javascript cuando se suma un valor numérico y un string, esto se convierte en un string.

Cuando un lenguaje es fuertemente tipado, el compilador retornará un error cuando se utilicen tipos de forma incorrecta.

var a string
a = 5
fmt.Println(a)

🍿 Ventajas del uso de tipado en Go

  • Mejor performance.
  • Los errores se descubren durante la compilación.
  • Los editores pueden autocompletar el código de forma mas sencilla.
  • La integridad de los datos es mejor.

🍿 Desventajas del uso de tipado en Go

  • Suele tomar mas tiempo escribir aplicaciones.
  • Hay que compilar tras cada cambio.
  • Suelen ser lenguajes mas rigidos y menos cambiantes.
  • La curva de aprendizaje suele ser mas complicada.

🍿 Ejemplo de una función en Go utilizando un argumento

En el presente ejemplo se ha creado una función hola, la cual recibe un parámetro s de tipo string. Esta función a su vez retorna un valor tipo string.

package main

import "fmt"

func hola(s string) string {
    return "Hola " + s
}

func main() {
    fmt.Println(hola("Luis"))
}

🍿 Función en Go que utiliza dos parámetros enteros

En el siguiente ejemplo tenemos una función que suma 2 parámetros enteros recibidos, y que retorna también un valor entero.

package main

import "fmt"

func sumar(a int, b int) int {
    return a + b
}

func main() {
    fmt.Println(sumar(6, 5))
}

Si por ejemplo utilizamos un string en lugar de un entero como argumento, el compilador lanzará un error.

003_tipado/main.go:10:23: cannot use "a" (type string) as type int in argument to sumar