1 回答

TA貢獻1785條經(jīng)驗 獲得超8個贊
您的問題過于寬泛,但基于上面的討論,我相信您要做的是從將在您的程序中使用的數(shù)據(jù)庫中加載某種靜態(tài)數(shù)據(jù),并且不需要刷新。在這種情況下,當您連接數(shù)據(jù)庫一次時加載數(shù)據(jù)并將其保存在包下的全局變量中是有意義的。例如:
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用來設置數(shù)據(jù),并model.GetData以線程安全的方式獲取數(shù)據(jù)。
- 1 回答
- 0 關注
- 116 瀏覽
添加回答
舉報