Go en 3 minutos

Luciano Adonis
devsChile
Published in
4 min readSep 20, 2018

Breve introducción a Go.

Créditos de la imagen al sujeto de este post

El TL;DR que me hubiese gustado leer del Tour of Go y la tan querida documentación, antes de empezar a trabajar con Go.

¿Qué es Go o Golang?

Es un lenguaje de tipo estático, concurrente y compilado. Creado por Google debido a sus necesidades. Ah y también es Open Source.

Go is a programming language designed by Google to help solve Google’s problems, and Google has big problems — Go At Google.

¿Qué es un Go Gopher?

Quién es este Pokémon.

Un diseño de Renee French para el logo de una camiseta de la WFMU radio station. El cual fue adaptado al logo de Golang que hoy conocemos y queremos, el Go Gopher.

¿De que sirve saber la historia de Gopher? Es fundamental; el resto son solo detalles.

Ambiente local 🖥

La instalación en macOS es lo suficientemente genérica, así que solo mencionaré esa. Con brew instalar Go y Dep:

brew install go
brew install dep

Dep es una herramienta que te permite manejar las Dep-endencias 💡

¿Qué es el GOPATH?

Es la variable de entorno utilizada para especificar la ruta donde estará tu Workspace (Donde pondrás proyectos como “Hello-Go”).

echo $(go env GOPATH)

Por defecto, tu Workspace esta en tu$HOME/go, en caso de querer cambiar esa ruta a una que te acomode mas, debes especificarla en el GOPATH.

En tu ~/.zshrc o ~/.bashrc agregas tu la ruta que más te acomode:

export GOPATH=/path/to/workspace

¿Qué hay dentro del GOPATH?

Dentro de tu directorio deben existir los siguientes directorios:

  • src: contienen los Go source files. Sobre estos trabajas 💡.
  • pkg: contiene package objects.
  • bin: contiene los ejecutables.

¿Cómo manejo las dependencias?

Puede ser con:

  • Go get: te permite importar los packages desde GitHub.
Go get -d -v ./…
  • Git clone: esta es la forma “fea” para importar, si por algún motivo no te funciona go get.

y la tercera forma, para los millennials como tú o como yo:

  • Dep:
dep init
dep ensure

Ejemplo obligatorio

Antes de eso, ¿cuál es la diferencia entre fmt.Println y fmt.Print?

El conocimiento sobre ese pequeño salto, no te hará mejor o más seco en Go, pero con el pasar del tiempo, entenderás que algunos errores son evitables leyendo menos de tres líneas de la documentación 😅.

Volviendo al ejemplo, crea un archivo llamado main.go:

package mainimport "fmt"func main() {
fmt.Println("hola mundo")
}

Para ejecutarlo:

go run main.go

Para compilar usasbuild seguido de los archivos:

go build main.go

Para la ejecución basta con:

./main

La estructura de un ejemplo obligatorio:

Package

El objetivo de este es agrupar código para un propósito específico. En base al nombre del package se determina si funciona como ejecutable (main) o reutilizable (cualquier cosa, menos main).

Para el caso de package main este requiere de al menos una función llamada main. El cual importará otros packages de tipo reutilizable con algún tipo de lógica conveniente.

Import

Se utiliza Import para darle acceso al package al código escrito dentro de otro package. Se pueden llamar distintas funciones pertenecientes a distintos archivos siempre y cuando pertenezcan al mismo package, en caso de querer utilizar otro package, se deberá definir con otro nombre y ser importado.

Functions

Son las cosas que te dejan hacer otras cosas

  • Si la función requiere de argumentos se debe definir el tipo de estos:
package main

import "fmt"

func main () {
a := 1
algunNombreIngenioso(a)
}

func algunNombreIngenioso(a int){
fmt.Print(a)
}
  • De la misma forma, si un valor es regresado por una función, se debe especificar el tipo:
package main

import "fmt"

func main () {
fmt.Print(diHoli())
}

func diHoli() string {
return "holi"
}

Variables:

Go, al ser un lenguaje de tipo estático, debe definir el tipo de variable escribiendo var seguido del nombre de la variable en camelCase con el tipo correspondiente ya sea string, int, bool o float.

var gameTitle string = "Xenoblade2"

Peeeeero, se puede inicializar una variable con := sin necesidad de tener que escribirla como anteriormente. Ya que Go asume por ti, para bien o para mal.

parrots := 5

Se puede inicializar una variable de la forma tradicional y luego asignarle un valor, es la forma en que los chicos populares lo hacen.

package mainimport "fmt"var ultraFast stringfunc main() {
ultraFast = "Parrot"
fmt.Println(ultraFast)
}

También se puede inicializar fuera de la función, pero el valor debe estar definido dentro de la función.

Ese fue mi resumen de Go en 3 minutos. Lectura recomendada: The Little Go Book y The Go Programming Language. Recomendación Udemy: Go: The Complete Developer’s Guide (Golang).

Sea cortés, use Go con cuidado, lea la documentación lo más que pueda, respete para que lo respeten y que Dios nos ampare 🙏.

--

--