es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problemas de comprensión de importaciones en Gin-Gonic

Estoy probando Gin-Gonic por primera vez, pero tengo problemas para entender cómo estructurar correctamente mi aplicación de una manera que sea más fácil de mantener a largo plazo.

Muchos de los tutoriales que he visto demuestran cómo configurar todas las rutas de la aplicación dentro de func main, pero eso rápidamente se volvería engorroso. Me gustaría poder estructurarlo de manera similar a un modelo Vista-Controlador (MVC) tradicional, algo similar a Revel, por ejemplo.

Hasta ahora, mi estructura se ve así:

.
├── go.mod
├── go.sum
├── main.go
├── routes
│     ├── routes.go
└── templates
    ├── footer.html
    ├── header.html
    └── index.html

2 directories, 7 files

main.go

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    router := gin.Default()
    router.LoadHTMLGlob("templates/*")
    routes.InitializeRoutes(router) // <-- Aquí modificas el nombre de la función
    router.Run()
}

routes.go

package routes

import "github.com/gin-gonic/gin"

func InitializeRoutes(router *gin.RouterGroup) { // <-- Aquí modificas la firma de la función
    router.GET("/", showIndexPage)
}

func showIndexPage(c *gin.Context) {
    c.String(200, "OK")
}

Cuando ejecuto go run main.go, obtengo el error que se muestra a continuación, como se esperaba sin la importación:

# command-line-arguments
./main.go:10:2: undefined: InitializeRoutes

Pero cuando intento importar routes/routes.go, nunca se reconoce y, cuando guardo, se elimina la importación.

He probado lo siguiente, pero no puedo hacer que esta importación sea reconocida.

./routes
github.com/mi-repo/ginApp/routes

¿Qué me falta aquí para que esto funcione?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que necesitas importar correctamente el paquete routes en tu archivo main.go para poder acceder a la función initializeRoutes.

    Puedes hacer esto utilizando una declaración de importación relativa como import "./routes" o utilizando la ruta completa del paquete como import "github.com/my-repo/ginApp/routes".

    Asegúrate de que tu declaración de importación coincida con la ruta de archivo y el nombre de paquete reales en tu archivo routes/routes.go.

    Si sigues teniendo problemas, verifica que tu archivo routes.go tenga el nombre de paquete correcto (package routes) y que la función initializeRoutes se exporte con una letra mayúscula (func InitializeRoutes).

    Una vez que hayas importado correctamente el paquete routes y sus funciones, deberías poder usarlo en tu archivo main.go para estructurar tu aplicación Gin-Gonic de una manera más mantenible.

Comments are closed.