Introducción a Go

29
XIII Semana Linux 2016 Introducción a Go Grupo GNU/Linux Universidad Distrital Francisco José de Caldas Semillero de Investigación en Tecnología Libre

Transcript of Introducción a Go

XIII Semana Linux 2016

Introducción a Go

Grupo GNU/Linux Universidad Distrital Francisco José de CaldasSemillero de Investigación en Tecnología Libre

Contexto

Golang: Go (programming language)

Libre y OpenSourcehttps://github.com/golang/

Anunciado en el 2009

Creado por:Robert GriesemerRob PikeKen Thompson

Realizado por: Leidy Marcela Aldana

“Go es un lenguaje de programación de código abierto que hace que sea fácil de construir 

software simple, confiable y eficiente.”

I. GOROOT :: puntero a la raíz de la instalación.II. GOPATH, similar al workspace de Java.

Variables de entorno

Compiladolenguaje de alto nivel

que requiere:

Lenguaje de Programación Imperativo y Orientado a objetos

Go: No cuenta con Excepciones ni con una sintaxis

específica para Herencia.

Composición 

No Concurrente Concurrente

x=x+1y=x+1

X=1; y=2; z=3

Concurrencia

Concurrente: procesos autónomos que se ejecutan (aparentemente) en paralelo

Concurrencia  ≠ Paralelismo

Componentes básicos de la concurrencia

Variables

Forma explícitavar <NombreVariable> <TipoDeVariable>

Forma implícita <NombreVariable> := “DatoQueSeGuardaEn EspacioTemporal”

<NombrePrimeraVariable>, <NombreSegundaVariable> = “DatoVariableUno” , “DatoVariableDos”

Duck typing 

“Cuando veo un pájaro que camina como un pato, nada como un pato, y grazna como un

pato, ese pájaro es un pato.”

http://franverona.com/blog/duck-typing-si-parece-un-pato-es-un-pato/

Tipos de Variableshttps://tour.golang.org/basics/11

No se pude utilizar :=

go build : Compila paquetes y dependencias

go test : Nombre_test.goPruebas unitarias

go run : Compila y corre

Tomado el 24 de Octubre, de: https://talks.golang.org/2016/applicative.slide#13

Retorno “desnudo”

return (sin parámetros) devuelve el valor de las variables usadas

Retorno de múltiples variables 

aplazar la ejecución de un comando

Defer

Ciclos : For

Arrays

El tipo [n]T es un arreglo de n valores de tipo T

Puede ser unidimensional : Var <NombreArray> [tamaño]TipoO puede ser bidimensional: Var <NombreArray> [filas][columnas]Tipo

Forma alterna de declaración<NombreArray> := [...]Tipo{elemento1, elemento2, …, elemento n}

len(<NombreArreglo>)=tamaño del arregloTamaño fijo

Al igual dos arrays en un condicional, se compara tamaño y contenido

Slice“array dinámico”

El tamaño puede cambiar en tiempo de ejecución

Función make: declara sliceDeclaración:

Var <Nombre_Slice> []TipoNombre_Slice := make([]Tipo, longitud, capacidad)

Funciones,len(<Nombre_Slice>)=Longitud del slice

cap(<NombreSlice>)= Capacidad total

Operaciones con Slices

l Append : agregar elementos l Range para iterar sobre estos elementosl

*T apunta a T. &T es la dirección de

memoria de T Mapas Estructuras Servidores web

(paquete http) Manejadores HTTP

Proyectos utilizando Go

Adicionalmente...

 Piensa Libre, Vive Libre. El Conocimiento te hace Libre. 

[email protected]