如何从单独的文件中设置 Go Fiber V2 中的路由组?

我想为每个子主要路线制作单独的文件。我正在使用 go 1.17


main.go


package main


import (

    "rolling_glory_go/routes"


    "github.com/gofiber/fiber/v2"

)


func main() {

    app := fiber.New()


    app.Get("/", func(c *fiber.Ctx) error {

        err := c.SendString("Hello golang!")

        return err

    })


    routes.R_login(app.Group("/login"))

    routes.R_users(app.Group("/users"))


    app.Listen(":3000")

}

我想从中导入路由r_login.go,r_users.go因此我可以管理来自不同文件的许多路由,而不是将单个文件中的许多路由放入main.go. 我收到这样的错误。


.\main.go:17:26: cannot use app.Group("/login") (type fiber.Router) as type *fiber.Group in argument to routes.R_login: need type assertion

.\main.go:18:26: cannot use app.Group("/users") (type fiber.Router) as type *fiber.Group in argument to routes.R_users: need type assertion


我的结构文件夹

http://img2.mukewang.com/6369f83e00017a1101980080.jpg

r_login.go


package routes


import "github.com/gofiber/fiber/v2"


func R_login(router *fiber.Group) {

    router.Get("/", func(c *fiber.Ctx) error {

        return c.SendString("respond with a resource")

    })

}

r_users.go


package routes


import "github.com/gofiber/fiber/v2"


func R_users(router *fiber.Group) {

    router.Get("/", func(c *fiber.Ctx) error {

        return c.SendString("respond with a resource")

    })

}


如何解决这个问题?


函数式编程
浏览 80回答 1
1回答

侃侃尔雅

由于您有app.Group("/login")which 类型fiber.Router ,只需修改R_login以使其接受此类型。package routesimport "github.com/gofiber/fiber/v2"func R_login(router fiber.Router) {    router.Get("/", func(c *fiber.Ctx) error {        return c.SendString("respond with a resource")    })}
打开App,查看更多内容
随时随地看视频慕课网APP