我的项目结构如下
myproj
src
server
main.go
helpres
helper1.go
helpr2.go
utils
utils1.go
utils2.go
这是main.go函数中的代码
import “myproj/utils”
import “myproj/helpers”
var log obj *obj
func init() {
log = initLog()
util.passLog(log)
helper.passLog(log)
//And then helper and util can use it ...is it the right way to do it ?
}
func main(){
log.write()
}
现在我可以在 server -> main.go
中使用 obj1,
但我也想在 helper1.go
和 utils2.go
中使用相同的实例
而不是在每个模块上创建新的,(稍后我从 server->main.go
中的 helper
和 util
调用一些功能)
打高尔夫球应该怎么做?
最佳答案
不推荐在包之间共享对象,因为当出现问题时很可能会变得困惑。调试和找出 obj
从哪里调用或改变将变得困难。相反,尝试将 obj
作为参数传递给 helper1
和 utils2
。
如果您确实确实想要共享该对象,请将名称更改为以大写字母开头,Obj
。这样变量就可以从你的包中导出,并且可以从其他地方使用。请注意,这会将 Obj
暴露给所有想要获取和(误)使用它的人。
编辑:
将 obj
传递给 helper 中的函数:
helper.doSomethingHelpfulWith(obj)
关于go - 使用不同模块在本地项目中共享实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47689781/