go - 如何在 Golang Beego 中删除重复的 ORM 实例化

标签 go beego

在Golang应用模型中

我有以下内容:

func AddClub(name string) int64 {
    o := orm.NewOrm()
    club := Club{Name: name}

    id, err := o.Insert(&club)
    if err != nil {
        fmt.Printf("Id: %s, Error: %s", id, err)
    }

    return id
}

然后在下面:

func GetAllClubs() []*Club {
    o := orm.NewOrm()

    var clubs []*Club
    num, err := o.QueryTable("clubs").All(&clubs)
    if err != nil {
        fmt.Printf("Returned Rows Num: %s, %s", num, err)
    }
    return clubs
}

我想删除 o := orm.NewOrm() 实例化的重复。我该怎么做?

我试着把它作为 init() 函数的一部分,如下所示:

func init() {
  o := orm.NewOrm()
}

但我在控制台中出现未定义错误

最佳答案

如果你想定义一个可用于整个包的变量..你需要在包级别声明它(如果你不打算注入(inject)它)。也就是说,在任何功能之外。

您也不能为此使用简写 := 初始化 - 它必须是显式的。

因此它必须是这样的:

var o orm.Ormer

func init() {
    o = orm.NewOrm()
}

请注意,它是在函数外部声明的,并且不使用速记初始化和赋值运算符 :=

关于go - 如何在 Golang Beego 中删除重复的 ORM 实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27899171/

相关文章:

go - 如何在beego上添加favicon.ico?

go - 如何在beego orm中将结构中的特定键设置为外键?

go - 运行时错误 :Invalid memory Address or nil pointer dereference-golang

go - 如何处理 `New(...` 函数中的长参数列表

sql - 用于 postgres json 插入的原始参数化字符串

go - golang 中的路由失败

go - 为什么我们需要在这里复制u的值?

c - 如何构建Catboost C评估库API?

go - Beego语法的功能 'Ctx.Input.GetData(' <variable-name >')'

json - Beego httplib.get 过滤JSON