4

Librerías, frameworks y otras cositas con Go

Osmandi
osmandi
42146

Antes de entrar a Platzi no sabía de la existencia de Go (de hecho, no sabía de muchas cosas de programación… 🤔 ok, no sabía casi nada de programación), y ahora que lo conozco la verdad le he agarrado cariño por diversos motivos. Tanto me ha gustado que desde que vi los cursos de Go no he dejado de estudiarlo y ahora repaso el curso de Go Avanzado, en el camino me he topado con librerías muy interesantes y frameworks que en opinión de una persona muy apreciada los compartiré.

¿DÓNDE CONSEGUIR LIBRERÍAS O MANEJADOR DE PAQUETES CON GO?


.

Python tiene pip
Javascript tiene npm (y otras más 😋)
Ruby tiene gem
Java tiene maven
.
.
.
¿Qué tiene Go?

Para obtener las librerías en Go lo hacemos con go get urlDominio/nombrePaquete y ello lo compila y lo instala en tu GOPATH.

En https://golang.org/pkg/ puedes encontrar las librerías internas de Go y otras que puedes obtener con go get

Screenshot_20180114_093706.png

¿UN REPOSITORIO QUE ABARQUE LOS PAQUETES DISPONIBLES?


Pues sí existe y es https://golanglibs.com/

Screenshot_20180114_093952.png

El repositorio tiene buscador y está organizado por categorías, hay de todo: Clientes BitTorrent, criptografía, kubernetes, para crear apicaciones de escritorio, manejar audio, vídeo, telegram, slack, Machine Learning y mucho más. Todos apuntando a los repositorios de GitHub.

Screenshot_20180114_095141.png

WEB


Hay muchos otros más, pero estos son los que más he escuchado (corrijo, leído).

  • Gin: Es un framework que promete ser más rápido que muchos otros, es bastante simple pero poderosa herramienta para crear microservicios. Un artículo muy interesante Build RESTful API service in golang using gin-gonic framework.

  • Beego: Al final del curso se menciona el framework, tiene modelo MVC que vale la pena usar. Si instalas bee esto ayuda mucho a acelerar el desarrollo. Dispone de su propio ORM.

  • Martini: Es muy parecido a Gin. Pero parece estar descontinuado.

  • Buffalo: Usa el kit de herramientas de Gorilla para administrar rutas, sesiones, cookies,etc. También es compatible con el ORM pop quien soporta MySQL/MariaDB, PostgreSQL y SQLite. Si lo correes con buffalo dev Puedes recargar el código en caliente desde el backend hasta el frontend y ver los cambios en vivo.

  • Revel: Es un framework bastante completo y no por nada el usado en el curso. Es rápido, sencillo y configurable.

  • Gorilla: Gorilla no es un framework sino un conjunto de librerías para el desarrollo web, esto no lo digo yo sino ellos. Si te vas por algo muy básico para probar websocket por ejemplo, Gorilla es una buena opción.

  • Hugo: Es un generador de sitios web estáticos. Una vez que definas un tema o tu mismo lo hagas (como un template) del resto es solo escribir en Markdown, hugo se encagará de generar las rutas de cada uno de los post. Ideal para páginas que manejan artículos pero he visto un caso en que crearon un demo de una e-commerce de Start Trek https://snipcart.com/blog/hugo-tutorial-static-site-ecommerce. Puedes combinarlo con frameworks como Bootstrap o Materialize para el FrontEnd.

<h2>GUI</h2>

Hoy en día ya se pueden hacer aplicaciones de escritorio con Go, un ejemplo es usando Electron How to add a GUI to your Golang app in 5 easy steps (powered by Electron). Pero la comunidad de Go ha creado ya librerías para ello, debes tener en cuenta de que son experimentales:

Zona de peligro: Para acá no he llegado todavía, si tienes prioridad en crear apps desktop con Go cuéntame tu experiencia con estas y otras librerías.

Hay muchas otras librerías para GUI pero las siguientes son las que he notado muy avanzadas que no hayan sido abandonadas:

  • qt: Tiene soporte para windows, macOS, Linux y otros más. Se nota bastante completa, aquí tienes unos screenshots Gallery.

  • go-gtk: Implementación de GKT con Go, en su página tiene screeshot de unos programas que a pesar de ser una librería experimental se nota interesante.

MACHINE LEARNING


.

Zona de peligro n°2: Las siguientes librerías tampoco las he utilizado. El uso de Machine Leaning con Go es una tendencia que va creciendo y aunque Python domina el mercado en Data Science y Machine Learning, Go tiene ya librerías para este propósito. Le he dedicado muy poco tiempo al Machine Learning con Go como para dar una opinión crítica pero te comparto lo que he encontrado.

  • gonum: Es una librería de referencia a cada Data Science con Go que le preguntas, y no es por gusto, contiene librerías para matrices, estadísticas, optimización y mucho más.

  • GoLearn: Es algo parecido a Scikit-Learn con Python. Contiene un conjunto de librerías para hacer Machine Learning con Go.

  • Gorgonia: Otra librería importante que ayuda a facilitar Machine Learning con Go.

  • Gophernotes: Es una librería que ayuda a tener Go en Jupyter, sí el notebook con Python ese mismo. Creada por @dwhitena autor del libro Machine Learning with Go, le tengo mucha admiración a esta persona por ser el influencer referente a Machine Learning con Go, también administra el canal de #data-science en el slack de gophers.

  • TensorFlow: Una de las librerías de Machine Learning más importantes, creada por google y sí tiene una API para Go. Aunque también tiene para C y Java.

<h2>CONCLUSION</h2>

Ya sabes dónde conseguir las librerías y frameworks con Go 😎 y como lo viste hay librerías para casi todo.

¿Qué te pareció?

Cuéntame, ¿Qué librería o framework has usado o te gustaría usar?

Escribe tu comentario
+ 2
1
3644Puntos

Excelente aporte grácias, me va servir mucho todos

1
19379Puntos

Excelente tu post. Apenas inicio en este camino con Go y es bueno saber de todas estas herramientas para continuar con mi aprendizaje.