No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Go modules: Ir más allá del GoPath con Echo

31/36
Recursos

¿Qué son los problemas comunes al programar en Go y cómo GoModules los soluciona?

Durante mucho tiempo, los desarrolladores de Go enfrentaron dos grandes desafíos al programar. En primer lugar, había que dividir el código dentro de la ruta del GoPath: el home, el nombre de usuario y la carpeta Go. En segundo lugar, al llevar el código a producción, especialmente cuando se requerían librerías de terceros, muchas plataformas no permitían insertar el código completo a nivel de carpeta, sino solo el binario o código de ejecución. Esto limitaba el uso de frameworks externos para la programación web en Go.

La solución llegó con la introducción de GoModules alrededor de 2018-2019. GoModules cambió las reglas del juego al simplificar la instalación de librerías de terceros y resolver los problemas iniciales de los desarrolladores de Go.

¿Cómo instalar el framework Echo para desarrollo web en Go?

El framework Echo es una excelente herramienta para quienes deseen desarrollar aplicaciones web con Go. A continuación, te explico cómo puedes comenzar a trabajar con Echo:

  1. Acceso al framework Echo:

    • Realiza una búsqueda de "Echo Golang" en Google.
    • Accede a la página del framework y revisa la documentación en GitHub o la guía de usuario disponible en GetStarted.
  2. Instalación de Echo:

    • Desde la terminal, utiliza el comando go get para instalar el paquete necesario, asegurando siempre trabajar con la versión más estable del repositorio:
    go get -u github.com/labstack/echo/v4
    

¿Cómo dar inicio a un módulo con GoModules y crear un Hello World?

Trabajar con GoModules para iniciar un módulo es sencillo y viene con la ventaja de gestionar las dependencias de forma eficiente.

  1. Iniciar un módulo:

    • En el terminal, dentro de la carpeta de tu proyecto, ejecuta:
    go mod init github.com/tu-usuario/nombre-del-repositorio
    

    Esto genera el archivo go.mod, que lista las dependencias del proyecto.

  2. Crear un servidor básico con Echo:

    • Instanciar Echo:
    e := echo.New()
    
    • Configurar una ruta base y definir una función para responder "Hello World":
    e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello World")
    })
    
    • Iniciar el servidor en el puerto 1323:
    e.Logger.Fatal(e.Start(":1323"))
    
    • Ejecutar el código con go run y verificar que el servidor responde en localhost:1323.

¿Cómo modificar un framework o librerías en Go e instalar GoModules?

Modificar librerías en Go no es comúnmente recomendado, pero puede ser útil para fines educativos o de debbuging. Aquí los pasos básicos:

  1. Localizar la librería:

    • Accede al GoPath y busca la carpeta pkg, donde se almacenan los módulos descargados.
  2. Editar archivos:

    • Localiza el archivo que deseas modificar, realiza un respaldo y edita el archivo necesario.
  3. Comprobar verificación del módulo:

    • Después de modificar, utiliza go mod verify para asegurarte de que las modificaciones no han dañado el módulo:
    go mod verify
    

Con estos pasos, ahora puedes disfrutar de la flexibilidad y eficacia que ofrecen los GoModules mientras aprendes y experimentas con el framework Echo. ¿Te has subido ya al carro de Go? Sigue explorando y experimentando para descubrir la increíble versatilidad del lenguaje Go.

Aportes 18

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

También está mal editado, quitaron la parte en la que edita el módulo 😦

cuando usas god mods no es necesario estar en el GOPATH, god mods nos permite inicializar y/o trabajar nuestro proyecto en cualquier parte de nuestro equipo, no importa si estas en
Documents o en algun otro sitio, esta caracteristica fue pedida por la comunidad dado que algunos no se sentian tan comodos al estar obligados a trabajar en el GOPATH

Esta es la guía de instalación, ya que no la agregaron en el apartado de recursos.

https://echo.labstack.com/guide/

No se si a todos le habrá pasado, pero al ejecutar como está en la clase, no funcionaba, pero siguiendo la guía de esta web https://echo.labstack.com/guide/ funciona.

Quizas no lo noten, pero aqui primero ejecutan go get, luego go mod init, y en la guía de la web lo hacen al reves

En mi opinion, el problema de editar codigo de modulos externos (Echo, en este caso), es que viola uno de los 12 factores (cuyo autor si no me equivoco es un ingeniero de Heroku). La razon es porque el codigo ahora ya no esta en repositorios, sino que esta en tu maquina. Cuando quieras escalar la app en muchos servidores, habria problemas para traer ese mismo codigo a todas esas maquinas (ya que el paquete esta referenciando un repositorio en Github). Una solucion es: hacer un fork de Echo, modificarlo, hacer push, y luego usar ese fork como modulo externo.
package main

import (
	"github.com/labstack/echo"
	"net/http"
)

func main() {
	// Instanciar echo
	e := echo.New()

	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello world")
	})

	e.Logger.Fatal(e.Start(":1323"))
}

A mi me sirvió instalar así

go install -v github.com/labstack/echo/v4@latest

Recomendación para el correcto funcionamiento

  • Primero inicializar le modulo con go mod init myapp
  • Instalar el módulo con go get -u -v github.com/labstack/echo/v4
  • Para habilitar el módulo, debe ejecutar este comando export GO111MODULE=on

Tuve que hacerlo de esta forma, para que funcionara con WSL

go get -v -u github.com/labstack/echo

Un pequeño instructivo de este video:

/** Go modules:
		To install 3rd party libraries: Echo - In this case
		https://echo.labstack.com/guide/
			1.- Run: $ go get github.com/labstack/echo/v4
			2.- If you need to watch a great change into a message server:
				2.1.- Move to $GOPATH and open:
					$ cd pkg/mod/github.com/labstack/echo/v4@v4.6.1
					Make a copy of your echo.go => $ cp echo.go ..
					Open this file (VSCode in this case): code echo.go
					Look for this message and add your own code:
						 ____    __
	  				/ __/___/ /  ___
	 					/ _// __/ _ \/ _ \
					/___/\__/_//_/\___/ %s
					High performance, minimalist Go web framework
					That's it! Don't forget to overwrite the change
			3.- Go back to main.go of your project and run
				$ go mod verify
				$ go run src/main.go
		**/

para la version go1.17 me funciono asi

package main

import (
	"github.com/labstack/echo/v4"
	"net/http"
)

func main()  {
	e := echo.New()
	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})
	e.Logger.Fatal(e.Start(":1323"))
}

Deben actualizar el vídeo ya que los comando para instalar han cambiado

tienen un curso en que se pueda hacer un software básico, como un e-commerce o un ejemplo para la web o de concurrencia?

Siento que sería de mucha utuiliad para toda la comunidad.

hasta que por fin se pudo , siempre me salia que la ruta no estaba en el main

Ya varias veces he tratado de hacer lo que dice en el video, según este artículo ya no se usa “go get”, si no, “go install” https://go.dev/doc/go-get-install-deprecation

El paralelo más sencillo para mí de los go modules es con el package.json en JS

Si les da el error

cannot find package “githubcom/labstack/echo/v4” in any of:
/usr/local/Cellar/go/1.18.2/libexec/src/github.com/labstack/echo/v4 (from $GOROOT)

Se puede usar este command
go get gopkgin/labstack/echo.v4