Go es un lenguaje de programación diseñado para desarrollar de software de “backend” altamente escalable, de manera sencilla y rápida. En esta presentacion veremos que es Go, como se programa sobre él, y como utilizarlo en Azure.
5. ¿Por que otro lenguaje de programación?
• El mundo corre en *nix
• Programar “software de sistema” es difícil
• Las computadoras tiene muchos núcleos
• Hoy en día un lenguaje de programación es mas que solo un compilador
• Manejo de librerías y dependencias
• Velocidad para compilar
• Facilidad para programar
• Testing
• Sin Friccion
6. Quienes
Rob Pike
• Bell Labs
• 1. Unix-Version
• Plan 9
• UTF-8
Ken Thompson
• Bell Labs
• 1. Unix-Version
• 1. Shell
• UTF-8
Robert Griesemer
• Google’s V8
• Java HotSpot
8. Premisas
• Multi-plataforma
• No corre en una maquina virtual
• Estático
• Type-safe / Memory-safe
• Garbage Collector
• Compilación rápida
9. Características
• “Battery included”
• Net / Http
• IO
• Concurrency
• Testing framework
• Integración con Git
• Structs instead of classes
• No Inheritance
• No overloading
• Concurrency
• Multiple return values
10. Instalación
• Descargar desde http://golang.org/doc/install
• Untar/Unzip en un directorio
• Variables de entorno
• GOROOT => Directorio de instalación de Go
• GOPATH => Código y binarios fuera de $GOROOT
• El workplace del usuario
11. Structs
• Colección de campos tipados
• Pueden contener métodos
• Pero no son clases estrictamente hablando
• Go favorece la composición por sobre la herencia
• Structural Typing
• Como Duck Typing pero en tiempo de compilación
• Embedding
• The fragile base class problema
12. Concurrencia
• Go provee un mecanismo sencillo para crear un nuevo thread
• Usando el constructor go antes de una llamada a una función (Go-
Routines)
13. Channels
• Los Channels son los pipes para conectar goroutines concurrentes
• Sirven para enviar y recibir valores entre dos goroutines
14. Deploy
• El código escrito en Go se puede compilar a código binario que se
ejecuta sin un entorno de Go
• Go Tools
• go build
• Compila el código
• go install
• Compila el código y librerías, y lo instala el workplace del
usuario
15. Deploy enAzure Web Site (4 pasos)
1. Crear un nuevo Web Site en el portal deAzure
2. Instalar Go via la consola
curl -O https://storage.googleapis.com/golang/go1.11.1.windows-386.zip
• Comprobar la ultima versión en https://golang.org/dl
unzip go1.11.1.windows-386.zip
• No preocuparse si aparece el error Bad Request
3. Desplegar nuestro código
4. Crear un Web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="d:homesitewwwrootgobingo.exe"
arguments="run d:homesitewwwrootserver.go"
startupTimeLimit="60">
<environmentVariables>
<environmentVariable name="GOROOT" value="d:homesitewwwrootgo" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
16. Azure SDK for Go
• https://github.com/Azure/azure-sdk-for-go
• Instalación
• go get -u github.com/Azure/azure-sdk-for-go/...