Una de las primeras cosas que como desarrolladores debemos tener en cuenta es como cada lenguaje establece convenciones y buenas practicas especificas para su desarrollo. Basado en esto he querido de la forma mas sencilla posible compartir lo que he estado aprendiendo sobre este tema.
Lo primero que debemos saber es que si bien podríamos tener la libertad de poner nuestro código de Go en cualquier lugar lo recomendable es organizar el código de una manera especifica.
Por convención todo tu código y el código que importes debes estar almacenado en un solo Workspace . Un workspace no es mas que un directorio dentro de tu sistema de archivos cuya ruta debe ser almacenada dentro de la variable de entorno GOPATH.
Para configurar GOPATH en bash shells linux, agregue la siguiente línea al archivo ~/.bash_profile:
export GOPATH=$HOME/go
El workspace go va a contener dos directorios:
-
src contiene los archivos fuente de Go.
-
bin contiene comandos ejecutables.
La herramienta go crea e instala binarios en el directorio bin.
El subdirectorio src generalmente contiene múltiples repositorios de control de versiones (como Git o Mercurial) que rastrean el desarrollo de uno o más paquetes fuente.
A partir de la configuración de nuestro workspace vamos a seguir la siguiente ruta para nuestros proyectos:
$GOPATH/src/github.com/user/project
Si bien es una estructura diferente a como venimos acostumbrados, esta tiene sus ventajas, te la explico un poco:
-
github.com: Lo primero que vemos es que luego del directorio src/ nos encontramos un directorio llamado github.com/ esto es porque un workspace en go puede contener múltiples repositorios administrados por github, asi mismo cada repositorio puede depender de otros repositorios.
-
user: hace mencion en principio a tu username en github, sustituye user por tu username, dentro de este directorio van a estar almacenados tus proyectos/repositorios. y esta es una de las cosas mas utilies de esta estructura de directorios pues en go vamos a poder hacer la importancion de paquetes de terceros a los cuales vamos a hacer referencia a traves de su repositorio, cada vez que importemos un nuevo paquete externo desde github, este sera descargado por el comando go get y almacenado en src/github.com/ convirtiendose este directorio en una especie de node_modules o vendors en otros proyectos, con la diferencia de que en go los paquetes externos no se almacenan dentro del proyecto sino que estaran disponibles para otro proyectos tambien.
-
project: en realidad proyecto no es mas que el directorio de cada uno de tus proyectos y que iran dentro de tu tu directorio /github.com/user/
Con esta estructura ya podras crear proyectos profesionales e importar paquetes de terceros.
Para importacion de paquetes vamos a utilizar el comando go get de la siguiente manera:
$ got get https://github.com/valyala/fasthttp
Este comando descargara dentro del directorio github.com/ el paquete fasthtttp del user valyala.
Fasthtttp es un paquete para crear un servidor web de alto rendimiento que puede llegar a ser hasta 10x mas rapido que el paquente nativo net/http.
Para hacer uso de este package primero que nada hacemos la importacion:
`package main
import (
“fmt”
“log”
“github.com/buaazp/fasthttprouter”
“github.com/valyala/fasthttp”
)`
Nota que estoy importando tambien el paquete fasthttprouter, este paquete nos ayudara a gestiornar rutas con mejor rendimiento.
Para finalizar en el siguiente codigo vamos a levantar un servidor http haciendo uso de los paquetes externos que acabamos de importar.
`func main() {
router := fasthttprouter.New()
router.GET("/", welcome)
log.Fatal(fasthttp.ListenAndServe(":3000", router.Handler))
}
func welcome(ctx *fasthttp.RequestCtx) {
fmt.Fprint(ctx, “Welcome!\n”)
}`
De esta forma podremos ejecutar este codigo con go run main.go y tendresmos corriendo nuestro server.
En conclusion llevando a cabo estos pasos tendremos:
-
Un workspace configurado dentro de GOPATH/src/github.com/myuser
-
Habremos creado un nuevo proyecto que podriamos llamar server y estara ubicado en GOPATH/src/github.com/myuser/server
-
Importaremos dos paquetes externos que van a estar almacenados dentro de GOPATH/src/github.com/ por lo que ya no tendremos solo el directorio de nuestro username, adicionalmente tendremos un directorio nuevo por cada paquete importado.
-
Gracias a esta estructura de directorios los paquetes externos importados podran reutilizarse en otros proyectos sin volverlos a descargar.
Curso Práctico de Go: Creación de un Servidor Web
COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE


