猿问

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

在 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 的一部分,如下所示:


func init() {

  o := orm.NewOrm()

}

但是我在控制台中收到 undefined o 错误


互换的青春
浏览 220回答 1
1回答

阿晨1998

如果你想定义一个可用于整个包的变量.. 你需要在包级别声明它(如果你不打算注入它)。也就是说,在任何功能之外。您也不能:=为此使用速记初始化 - 它必须是明确的。因此它必须是这样的:var o orm.Ormerfunc init() {    o = orm.NewOrm()}请注意,它是在函数外部声明的,并且不使用速记初始化和赋值运算符:=。
随时随地看视频慕课网APP

相关分类

Go
我要回答