在 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 错误
1 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
如果你想定义一个可用于整个包的变量.. 你需要在包级别声明它(如果你不打算注入它)。也就是说,在任何功能之外。
您也不能:=为此使用速记初始化 - 它必须是明确的。
因此它必须是这样的:
var o orm.Ormer
func init() {
o = orm.NewOrm()
}
请注意,它是在函数外部声明的,并且不使用速记初始化和赋值运算符:=。
- 1 回答
- 0 关注
- 219 浏览
添加回答
举报
0/150
提交
取消