给定一个包含以下局部变量和函数的包:
var bucket *gocb.Bucket
func Init(b *gocb.Bucket) {
bucket = b
}
func DoSomething() {
// do something with 'bucket'
}
在调用依赖于变量Init的bucket, 之前调用函数,传入 , 的实例是否可以接受?DoSomethingbucket
或者,应该DoSomething显式接受一个bucket参数,如下所示:
func DoSomething(bucket *gocb.Bucket) {
// do something with 'bucket'
}
我更愿意bucket在包级别实例化单个实例,并在整个应用程序生命周期中使用它,而不是在功能级别进行管理。从设计、性能等角度来看,这是否可以接受,或者是否有实现这一目标的首选方法?请记住,bucket只需实例化一次。
DoSomething将从 HTTP 上下文中调用;我希望 HTTP 处理程序在bucket参数上没有可见性,而是bucket在应用程序启动时实例化。
牧羊人nacy
相关分类