1 回答
TA贡献1785条经验 获得超8个赞
您的问题过于宽泛,但基于上面的讨论,我相信您要做的是从将在您的程序中使用的数据库中加载某种静态数据,并且不需要刷新。在这种情况下,当您连接数据库一次时加载数据并将其保存在包下的全局变量中是有意义的。例如:
package model
var SomeData []SomeType
package main
func main() {
// Load data from the db
model.SomeData = loadedData
// Start the program...
}
这假设model.SomeData在程序期间不会改变。例如,如果您需要定期重新加载它,则程序的更好结构是:
package model
var someData []SomeType
var someDataLock sync.RWMutex
func GetData() []SomeType {
someDataLock.RLock()
defer someDataLock.RUnlock()
return someData
}
func SetData(in []SomeType) {
someDataLock.Lock()
defer someDataLock.Unlock()
someData=in
}
然后你model.SetData用来设置数据,并model.GetData以线程安全的方式获取数据。
- 1 回答
- 0 关注
- 145 浏览
添加回答
举报
