1b Introgo
1b Introgo
a Go
Motivación
• Go es un lenguaje nuevo: • Objetivo:
Introducción a Go 2
Rápido, divertido y productivo
Introducción a Go 3
Creadores (Google)
Bell Labs ETH Zurich
Introducción a Go 4
Contexto
• Influencias: • Elementos destacables:
Introducción a Go 5
Cosas que “faltan”
• sobrecarga de funciones y • tipos variantes (variant)
operadores
• tipos genéricos (templates)
• conversiones implícitas
• excepciones
• clases o herencia de tipos
• librerías dinámicas
Introducción a Go 6
La herramienta go
• > go comando
• bug • get
enviar parte de error obtener dependencias e instalarlas
• build • install
compilar e instalar paquetes y dependencias
compilar paquetes y dependencias
• list
• clean mostrar paquetes o módulos
eliminar objetos y cache
• mod
• doc gestión de módulos
mostrar documentación
• run
compilar y ejecutar
• env
mostrar variables de entorno de go
• test
realizar tests
• fix
actualizar paquetes a nuevas APIs • tool
ejecutar herramientas específicas
• fmt
formato automático de fuentes • version
mostrar la versión actual de Go
• generate
generar código automáticamente • vet
comprobación de errores (linting)
Introducción a Go 7
Web oficial
Web oficial: go.dev
Secciones a destacar:
• Descargas de Go.
• Inicio rápido.
• Documentación.
• Librería estándar.
• Buscador de paquetes.
• Blog.
Introducción a Go 8
Nociones iniciales
(ejemplos de gobyexample.com)
Introducción a Go 9
Ficheros e identificadores
• Fuentes de Go: • Identificadores:
Introducción a Go 10
Paquetes
Introducción a Go 11
Funciones
Introducción a Go 12
Hola mundo
Este es el clásico hola mundo.
Introducción a Go 13
Valores
Algunos ejemplos de los distintos
tipos de valores que tiene Go,
entre otros: cadenas, enteros,
flotantes, booleanos, etc.
Introducción a Go 14
Variables
En Go, las variables se declaran de
forma explícita y hay comprobación
de tipos por el compilador.
Introducción a Go 15
Constantes
Go soporta constantes de carácter,
cadenas, booleanos y valores
numéricos que se declaran
mediante const.
Introducción a Go 16
Bucle for
El único bucle en Go es for, y
permite expresar otros tipos de
bucles comunes:
Introducción a Go 17
If/else
Su uso en Go es similar a otros
lenguajes.
Introducción a Go 18
Switch
En Go, switch permite
expresiones de muchos tipos y no
sólo enteros o constantes.
Introducción a Go 19
Switch (II)
Existe un switch de tipos que
permite comparar tipos en lugar
de valores.
Introducción a Go 20
Arrays
En Go, un array es una secuencia
de valores del mismo tipo de
longitud determinada. El tamaño
es parte del tipo.
Introducción a Go 21
Slices
Los slices son clave en Go, permiten
mayor funcionalidad que los arrays
tradicionales.
Introducción a Go 22
Slices (II)
Los slices también se pueden
copiar con la función propia
copy().
Introducción a Go 23
Mapas
Son el tipo asociativo (dicts, hash-
maps…) en Go. Para crear un map
vacío, se utilizar make():
make(map[tipo-clave]tipo-val)
Introducción a Go 24
Range
Este tipo de bucle permite iterar
sobre los valores de algunas
estructuras de datos como arrays,
slices, maps y cadenas.
Introducción a Go 25
Funciones
Las funciones en Go son muy
similares a otros lenguajes. Se
requiere returns explícitos.
Introducción a Go 26
Funciones (II)
El uso de múltiples variables de
retorno es idiomático en Go y se
utiliza en la librería estándar.
Introducción a Go 27
Funciones (III)
También se soportan cierres. Son
útiles para definir una función en
línea sin tener que nombrarla
para llamadas, devoluciones o
valores de tipo función.
Introducción a Go 28
Cadenas
Una cadena en Go es un slice de
bytes inmutable (solo lectura).
Introducción a Go 29
Structs
Introducción a Go 30
Métodos
Se pueden definir métodos sobre structs.
Introducción a Go 31
Aprendiendo Go
Existe mucha más información tanto en los tutoriales de la web de Go como
en gobyexample. Entre otros, sería muy recomendable investigar:
Introducción a Go 32