Empiezo con una nueva sección, mi aventura con el lenguaje GO, el cual he descubierto que me encanta, es un lenguaje muy bueno y sencillo para tratar con temas de concurrencia y realmente hace un montón de cosas por si solo(como su paquete net que hace la vida mas fácil en cuanto a servidor Web se refiere), lo vamos a ir viendo poco a poco. Sin mucho más empecemos
Instalación
El lenguaje lo podemos escribir desde cualquier editor de texto pero es necesario instalar el compilador y realizar algunas configuraciones. Desde la propia página Go Download están los paquetes, y las instrucciones. También es posible instalarlo con Homebrew (si lo usamos).
brew install golang
Para la correcta instalación tenemos que tener en cuenta que es necesario configurar ciertas variables de entorno, teneis toda la información en:
Instalación GO
Haceros a la idea de que la documentación de Go es bastante completa por lo que en general encontraremos todo lo que necesitemos aquí:
Documentación GO
Solo como aclaración tener en cuenta lo que comenta la documentación sobre los variables de entorno, si ejecutamos algún intalador (MAC/Windows) no deberíamos tener que hacer nada, si algo no funciona comprobar que existe en la variable de entorno $PATH la referencia a Go y que es correcta:
Windows
c:\Go\bin
Mac
echo $PATH <- nos devuelve lo que tenemos ahora mismo en el path
Esto deberia devolvernos una cadena de texto muy larga que en algún punto deberia poner algo similar a esto
/usr/local/go/bin
Si lo hacemos en Linux o con cualquier source, lo mejor es extraer el contenido en las rutas recomendadas y configurar las variables de entorno como aparece en la documentación.
Si tenéis algún problema buscar en internet que hay mucha información sobre esto, aun así si continuáis con problemas ponerlo en los comentarios e intentamos resolverlo.
Antes de continuar un detalle de algunas carpetas del directorio de Go, por si quereis buscar algo:
bin <- binarios, los que instalamos con go install
package o pkg <- Trabajar con los wrappers dentro de nuestro código. Encapsuladores de C.
src <- Todo nuestro código fuente y la librerías de terceros. Las puede descargar go al realizar los imports en nuestras clases, o las podemos poner nosotros. Aqui es donde suele buscar el origen de los imports.
Algunos detalles sobre GO
Go es un lenguaje compilado no interpretado, es decir, el código es compilado (transformado) a lenguaje máquina con lo que se genera un ejecutable que funcionará sin necesidad de nada más para la arquitectura para la que fue creado. Si hablamos de los errores, en este tipo de lenguajes deberíamos verlos en el proceso de compilación, pero veremos como con GO podemos probar nuestro código sin necesidad de compilar.
Un lenguaje interpretado es aquel en el que un tercero(normalmente llamado intérprete) lee nuestro código y lo traduce a código máquina, esto sucede cada vez que lo ejecutamos, y los errores los detectamos en este tiempo de ejecución.
Go es un lenguaje que se usa mucho para scripting en backend ya que es bastante rápido en ejecutar, sus librerías básicas cubren mogollón de escenarios y como he comentado el mismo script lo podriamos compilar para todos los S.O, aunque esto depende un poco de lo que haga jejejeje, no es tan mágico como suena. Personalmente me encanta por la parte de concurrencia y la parte de Web Server, que si mezclamos ambas cosas podemos hacer cosas muy curiosas y que consuman pocos recursos.
Como ejemplo pongo un caso de uso de la empresa Malwarebytes en el que gestionan 1 Millón que bajaron sus consumos en un porcentaje muy alto usando GO link. No se a vosotros pero a mi me parece muy interesante poder hacer cosas como esa.
Es un lenguaje con tipado estático, esto quiere decir que desde el principio al declarar las variables tenemos que indicarle el tipo que son. Aunque es cierto que GO tiene una forma de declaración y asignación de variables, en la que el lenguaje hace lo que se conoce como "inferencia de tipos", o lo que es lo mismo, el propio lenguaje define el tipo de la variable según el valor asignado(veremos mas adelante ambas formas)
Por último comentar que es un lenguaje que tiene características similares a C (como puede ser que usa punteros), compila directamente en ensamblador y un extra que es muy útil y que nos ahorra quebraderos de cabeza es que tiene recolector de basura es decir, no tenemos que controlar el estado de las variables o funciones para saber si se estan usando o no, ya lo hace Go por nosotros y aunque afecta un poco al rendimiento (realmente es muy poquito), es de agradecer a la hora de programar
Hola Mundo
Como ya he escrito bastante rollo, vamos a trabajar un pelín con go.
Antes de empezar primero comprobamos que tenemos bien instalado Go, para ello desde cualquier linea de comandos (da igual Windows/Mac/Linux) escribimos:
go version
Y deberíamos ver algo como esto:
Si lo vemos todo va bien, si a alguien no le aparece o tiene problemas que lo vaya poniendo en los comentarios y vemos como lo solucionamos.
Ahora abrimos un fichero de texto escribimos siguiente y guardamos como main.go:
package main
import "fmt"
func main() {
fmt.Println("Hello Power Rangers")
}
Con el fichero guardado, nos situamos en la ruta donde lo tengamos en nuestra linea de comandos y ejecutamos:
go run main.go
Esto nos deberia mostrar algo similar a esto en la consola:
Voilá ya tenemos nuestro hola mundo. Ya iremos viendo lo que es cada cosa que hemos escrito, esto es solo para que escribamos un poco y veamos que funciona.
IDEs
Lo último que vamos a ver en este post, serán los IDE, que yo no se vosotros, pero a mi el modo Chuck Norris para programar (hacerlo directamente en un fichero de texto) no es lo que mas me convence, si tenemos posibilidades de que nos ayuden un pelín de alguna forma yo lo agradezco, pero como ya he comentado se puede hacer con cualquier editor de texto.
Para programar con Go tenemos varias opciones:
- Podemos hacerlo en un fichero de texto(Chuck Norris/Bruce Lee/Yoda mode) como ya he comentado
- Otra opción es usar Sublime Text una gran mayoria de vosotros ya lo conocereis, y como siempre pues tenemos plugins que la comunidad ha creado Ejemplo lo que le daria algunas vitaminas a nuestro editor para trabajar con Go.
- Tambien es posible usar Atom. Sigue la misma teoría que Sublime, tenemos plugins que nos ayudan con Go Ejemplo
- Los grandes de JetBrains están preparando un IDE muy completo (como siempre previo pago), y ahora tenemos disponibles algunos plugins para algunos de sus IDEs actuales.
- Para hacer pruebas o si quereis para algunas cosas de las que vayamos viendo podemos usar el PLAYGROUND de Go SuperPlayground, super util para compartir código.
- Como última opción y la que más gusta es Visual Studio Code, para mi es un acercamiento a las aplicaciones de JetBrains (que para mi son de lo mejor que hay). Como es la que uso veamos un poco su configuración.
Visual Studio Code
Con cualquier IDE y como programadores, nos pueden interesar mínimo 2 cosas para agilizar un poco nuestro trabajo:
- Que nos indique errores cuanto antes
- Y poder hacer debug de nuestro código para poder resolver mejor los problemas que nos vayamos encontrando.
Pues estas dos cosas y algún extra como las sugerencias son las que nos ofrece este IDE con algunas configuraciones.
Lo primero es instalar el plugin de Go desde la aplicación. Para ello tenemos que buscar la ventana de extensiones, creo que en todas ellas esta en el menu superior de la aplicación en la pestaña ver o view, seleccionamos extensiones o extensions
Y en la ventana que nos aparece buscamos Go
Y entre todas las extensiones que nos aparecen buscamos la de lukehoban y la instalamos.
Una vez que termine nos pedirá reiniciar la aplicación, y una vez que reinicie lo mejor es crear un fichero nuevo y ponerle extension .go.
Hacemos esta para que el propio visual studio nos complete la instalación, ya que cuando guardemos el fichero nos aparecerán algunos mensajes como este:
Básicamente en todos los que nos pregunte tenemos que indicarle Install All
También es posible que nos indique que configuremos el GOPATH para que os hagáis una idea ese seria el Workspace desde donde trabajaremos, si os sale eso en Doc-GOPATH o en Test Install GO tenéis info para que identifiquéis bien lo que es y podáis configurarlo correctamente.
Lo segundo es configurar para poder hacer debug, lo más fácil es que miréis en la documentación del creador Derekparker-delve, aquí según vuestro sistema operativo tenéis las instrucciones. En general suele valer con hacer
go get github.com/derekparker/delve/cmd/dlv
Aunque depende un poco de la versión de sistema, como he comentado lo mejor es que miréis la documentación.
Y una vez que lo tengáis instalado ya podremos ir poniendo lo que se conoce como puntos de interrupción para controlar lo que hace nuestro código.
Con hacer click un par de veces al lado del número de linea es suficiente. Y para comprobar que funciona pulsamos sobre F5 o nos vamos al menú Depurar y pulsamos Iniciar depuración
Y entonces nuestro IDE cambiará al modo debug que lo que nos hará será parar la ejecución del código donde tengamos los puntos y podemos ver como están las variables o lo que tengamos en el código.
Como veis en la imagen variables a la izquierda, pila de llamadas un poco más abajo, puntos de interrupción.... todo muy útil sobretodo cuando tenemos problemas con nuestro código.
Y con esto finalizo este post(por fiiiin!!! ) y ya en los siguientes empezaremos con lo bueno.
Si tenéis dudas o problemas ponerlo en los comentarios.
Ciaaaao








