我们可以将额外的参数传递给 beego 路由器吗

can we pass extra parameter to a beego router

type MainController struct {
    beego.Controller
}

func (this *MainController) Post() {
    var datapoint User
    req := this.Ctx.Input.RequestBody
    json.Unmarshal([]byte(req), &datapoint)
    this.Ctx.WriteString("hello world")
    //  result := this.Input()
    fmt.Println("input value is", datapoint.UserId)

}

这是在 url 发生时执行的普通 beego 路由器。我想要

type MainController struct {
    beego.Controller
}

func (this *MainController,db *sql.DB) Post() {

    fmt.Println("input value is", datapoint.UserId)

}

为了使用数据库连接指针。是否可以使用 go 实现此目的...如果不能,请提出建议

你不能在 golang 中这样做

type MainController struct {
    beego.Controller }

func (this *MainController,db *sql.DB) Post() {

    fmt.Println("input value is", datapoint.UserId)

}

表格中的声明

function (c *MainController)Post()

表示 Post 是 MainController 结构的一种方法,您可以将变量传递给它。

我的建议是像下面这样在包中将 db 指针声明为全局变量,然后您就可以在 Post 函数中使用它

type MainController struct {
    beego.Controller
}

var db *sql.DB

func (this *MainController) Post() {
    //you can now use the variable db inside here
    fmt.Println("input value is", datapoint.UserId)

}

但考虑到这是使用 MVC 模式的 Beego,您可以在模型中完成所有这些工作。我建议你看看他们很棒的documentation here