[golang] 单例模式singleton,正确的打开方式

单例模式是常用的设计模式,但在golang里和c++/java等实现的方式略有不同,非常干净利落!来,上代码:

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!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容