如何在 Golang Beego 中删除重复的 ORM 实例化
How to remove duplicate ORM instantiation in Golang 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 的一部分,如下所示:
func init() {
o := orm.NewOrm()
}
但我在控制台中收到未定义错误
如果你想定义一个可用于整个包的变量..你需要在包级别声明它(如果你不打算注入它)。也就是说,在任何函数之外。
您也不能为此使用 shorthand :=
初始化 - 它必须是显式的。
因此它必须是这样的:
var o orm.Ormer
func init() {
o = orm.NewOrm()
}
注意它是在函数外声明的,它不使用 shorthand 初始化和赋值运算符 :=
.
在 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()
}
但我在控制台中收到未定义错误
如果你想定义一个可用于整个包的变量..你需要在包级别声明它(如果你不打算注入它)。也就是说,在任何函数之外。
您也不能为此使用 shorthand :=
初始化 - 它必须是显式的。
因此它必须是这样的:
var o orm.Ormer
func init() {
o = orm.NewOrm()
}
注意它是在函数外声明的,它不使用 shorthand 初始化和赋值运算符 :=
.