大神们,没有什么项目实战经验,自己想写个website。 但是在用到数据库这块,觉得很不合理,直接就声明了一个db的全局变量,然后在main.go中调用db.open 类似的方法与数据库建立连接,然后返回值赋给了之前声明的db。我看了beego的代码,还有gin的。但是没法把人家的设计结构的思想转成我自己的。能有朋友给我指点么?
我自己也想了一些。就是声明一个结构体,里面有一个sql包里的db结构体作为我自定义结构体里的变量。然后在写一些这个结构体对应的method, 格式类似func (o *db) GetProducts(){...} . 但是感觉怪怪的。真心求大家帮个忙, 点我一下
有疑问加站长微信联系(非本文作者)

求电子邮件或者其他任何方法沟通。只要大神方便就行。
定义一个包,然后在包的 init 中初始化 bd,之后其他包直接引用该包,使用该变量。
那这个变量在这个包里是全局的?
谢谢回复啊,真心怕石沉大海,没想到这么快就有人回复 了,感激
包里全局,且是导出的(即首字母大写)
在main 程序中引用你的db初始化!!初始化一次 其他函数 就都可以调用
@channel 啊~理解了,我之前是包里全局,但是没有用init初始化。谢谢啦
@aiaa5505 这个db也是其所在包里的全局可导出变量 是吗
刚才看了一眼beego工具生成的一个项目框架。
他是这样写的,大神,你说的也是这个意思是不?真的太感谢了。要不我一个人要纠结好长时间!
一般就是定义一个全局变量,初始化一次,方便快捷,坏处大概就是因为是全局变量吧 func (o *db) GetProducts(){...} 这种写法我也用过,确实比较繁琐,好处就是可以单测mock db的数据,也只是包可见
就是这个意思
非常感谢,多向你学习