單例模式是常用的設(shè)計模式,但在golang里和c++/java等實現(xiàn)的方式略有不同粪薛,非常干凈利落悴了!來,上代碼:
import "sync"
var once sync.Once
var awsMeta *MetaDb
func DefaultAWSMetaDb() *MetaDb {
once.Do(func() {
awsMeta, _ = NewMetaDb(AWS, TestConsulAddress)
})
return awsMeta
}
int main() {
meta1 := DefaultAWSMetaDb()
meta2 := DefaultAWSMetaDb()
meta3 := DefaultAWSMetaDb()
// 上面的三個meta违寿,使用同一個meta地址
}
once.Do()只會運行一次湃交,是不是很棒!Have fun藤巢!