Go
Rodolfo Finochietti
Chief Delivery Officer
@rodolfof
rodolfof@lagash.com
Most popular languages
https://insights.stackoverflow.com/survey/2018
Most popular (programming) languages
https://insights.stackoverflow.com/survey/2018
Most loved languages
https://insights.stackoverflow.com/survey/2018
¿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
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
The Go Gopher
https://blog.golang.org/gopher
Premisas
• Multi-plataforma
• No corre en una maquina virtual
• Estático
• Type-safe / Memory-safe
• Garbage Collector
• Compilación rápida
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
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
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
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)
Channels
• Los Channels son los pipes para conectar goroutines concurrentes
• Sirven para enviar y recibir valores entre dos goroutines
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
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>
Azure SDK for Go
• https://github.com/Azure/azure-sdk-for-go
• Instalación
• go get -u github.com/Azure/azure-sdk-for-go/...
lagash.com
¿Preguntas?
Argentina | Buenos Aires
+54 (11) 4982 4185
info@lagash.com
Chile | Santiago de Chile
+56 (2) 2231 9428
info_chile@lagash.com
Colombia | Bogotá
+57 (1) 750 5276
info_colombia@lagash.com
México | México DF
+52 (55) 6394 0617
info_mexico@lagash.com
USA | Seattle - US
+1 844 4 Lagash
infousa@lagash.com
Uruguay | Montevideo
+598 2623 2546
info_uy@lagash.com
Let’s keep in touch

Go

  • 1.
    Go Rodolfo Finochietti Chief DeliveryOfficer @rodolfof rodolfof@lagash.com
  • 2.
  • 3.
    Most popular (programming)languages https://insights.stackoverflow.com/survey/2018
  • 4.
  • 5.
    ¿Por que otrolenguaje 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 • BellLabs • 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
  • 7.
  • 8.
    Premisas • Multi-plataforma • Nocorre 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 desdehttp://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 decampos 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 proveeun mecanismo sencillo para crear un nuevo thread • Usando el constructor go antes de una llamada a una función (Go- Routines)
  • 13.
    Channels • Los Channelsson los pipes para conectar goroutines concurrentes • Sirven para enviar y recibir valores entre dos goroutines
  • 14.
    Deploy • El códigoescrito 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 WebSite (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 forGo • https://github.com/Azure/azure-sdk-for-go • Instalación • go get -u github.com/Azure/azure-sdk-for-go/...
  • 17.
  • 18.
    Argentina | BuenosAires +54 (11) 4982 4185 info@lagash.com Chile | Santiago de Chile +56 (2) 2231 9428 info_chile@lagash.com Colombia | Bogotá +57 (1) 750 5276 info_colombia@lagash.com México | México DF +52 (55) 6394 0617 info_mexico@lagash.com USA | Seattle - US +1 844 4 Lagash infousa@lagash.com Uruguay | Montevideo +598 2623 2546 info_uy@lagash.com Let’s keep in touch