Go, también conocido como Golang, de código abierto fue creado por Google con los desarrolladores Robert Griesemer, Rob Pike y Ken Thompson en 2009. A pesar de ser un lenguaje muy joven tiene un rendimiento similar a C pero con la sintaxis amigable parecida a Python, actualmente es utilizado en aquellos programas que requieran alto rendimiento y un ejemplo de ello es Docker.
Una manera de repasar los temas básicos es utilizando la página oficial goolang.org y ellos prepararon A tour of Go. Traducido por la comunidad a múltiples idiomas, entre ellos el español. Aunque su versión en inglés hay notas adicionales interesantes además que puedes bajarlo y correrlo en localhost con el comando gotour. Con el curso de go podrás aprender todo ese contenido y más.
Esto es un Hello World en Golang:
package main
import (
"fmt"
)
func main() {
fmt.Println("Nunca pares de aprender en Platzi")
}
Este código lo puedes probar en play.golang.org/p/tHTM84d04gw. Podrás notar que sin necesidad de importar otra librería puedes imprimir en consola textos en otro idioma.
Una de las principales funciones de Golang es que maneja las múltiples tareas de forma concurrente, es decir, que el procesador divide el trabajo en múltiples hilos y a cada uno le dedica un tiempo en milisegundos acelerando el tiempo de ejecución en cada tarea sin necesidad de realizar configuraciones adicionales ya que Golang lo traen en sus librerías preinstaladas.
La manera como Golang trabaja esto es a través de Goroutines y Canales. Puedes tener múltiples Goroutines por canal y transportar el Goroutine de un canal a otro. Un excelente uso de Goroutines es al momento de trabajar transferencia de datos en tiempo real desde un cliente a otro, como por ejemplo un chat o un sistema de ubicación en tiempo real.
Este es un ejemplo de concurrencia que aprenderás en el Curso de Go
package main
import (
"fmt"
"time"
)
func helloGo(index int) {
fmt.Println("Goroutine #", index)
}
func forGo(n int){
for i := 0; i < n; i++ {
go helloGo(i)
}
}
func main(){
go forGo(500)
time.Sleep(2000 * time.Millisecond)
}
Podrás ver el código en ejecución en play.golang.org/p/jnpLzgJsDoO
Como notarás los índices del output no son secuenciales, esto se debe a que están trabajando de forma concurrente.
Go con su sintaxis sencilla de entender facilita su aprendizaje y unas de sus ventajas principales es la implementación de concurrencia por defecto mediante goroutines que facilita el rendimiento de cálculos y múltiples tareas complejas con grandes cantidades de datos. Es por ello que al momento de requerir WebSockets con altas peticiones es el lenguaje ideal e gracias a este potencial existen librerías para utilizar Golang en Machine Learning.
Con el Curso de Golang podrás aprender las bases para crear tus propias APIs e inclusive implementar realtime de forma sencilla y potente con este lenguaje de alto rendimiento cada vez más demandado por las empresas.
Hay dos fuentes principales donde encontrar librerías, la primera son las que vienen por defecto al instalar y encuentras la documentación en golang.org/pkg y puedes encontrar librerías de terceros en go-search.org.
Entre las más populares se encuentran:
Hugo: Es un generador de páginas web estáticas, en el cual seleccionas un tema y el contenido lo realizas utilizando la sintaxis de Markdown.
Gorilla: Tiene un conjunto de librerías para el desarrollo Web, ideal para prototipar WebSockets.
qt y go-gtk: Ayudan a crear interfaces gráficas multiplaformas.
Gonum: Enfocada al uso de Data Science con Go puesto que contiene funciones para manejar matrices, estadísticas y optimización.
GoLearn: Es parecida a Scikit-Learn para Python, enfocado a Machine learning con Go.
Gophernotes: Kernel creado para trabajar en Go dentro de Jupyter notebook.
TinyGo: Utilizado para programar en IoT con Go.
Echo: Minimalista, escalable y de alto rendimiento y si lo combinas con Fresh podrás hacer que cada cambio guardado se recompile y ejecute.
Revel: Es bastante completo para hacer proyectos complejos.
Gin: Es rápido en su ejecución e ideal para hacer prototipos de de microservicios RESTful API.
Beego: Dispone de su propio ORM y facilita el desarrollo Web bajo el model MVC.
Buffalo: Implementa el kit de herramientas de Gorilla y puedes recargar código en caliente con buffalo dev
Gophers: Es la comunidad oficial en Slack, varias comunidades con propósitos específicos se concentran en sus canales.
@golang: Twitter donde publican noticias de Golang.
golangweekly: Si te suscribes semanalmente recibirás de los últimos avances del lenguaje, tutoriales e inclusive ofertas de trabajo.
r/golang (reddit): Muy activa referente a noticias y diversos tutoriales.
Backend: Parte del software que actua fuera de los ojos del usuario, en el desarrollo web es la capa que se encarga de manejar la información y las reglas del negocio
API: Aplicación que funciona como interfaz de programación, la cual es usada como biblioteca y proporciona interoperabilidad entre sistemas.
CRUD: De sus siglas en inglés Create, Read, Update, Delete. Este término se utiliza para describir una aplicación web cuyo propósito general es crear, leer, actualizar y eliminar. Por ejemplo el software de un blog, donde se puede crear una entrada, leerla, actualizarla o eliminarla.
GOPATH: Variable de entorno Linux donde indica el Path de trabajo de Go y en el que se encuentran las carpetas SRC, BIN y PKG.
Goroutines: Son hilos de ejecución de código en Golang que se mandan al procesador y trabajan de forma concurrente.
Concurrencia: Forma en que el procesador ejecuta hilos por un lapso de tiempo cada uno siguiendo un orden sin alterar el resultado fianl.
Kevin Morales
hace 3 meses
Héctor Daniel Vega Quiñones
hace 3 meses
Héctor Daniel Vega Quiñones
hace 4 meses
Héctor Daniel Vega Quiñones
hace 4 meses