保证一个类仅有一个实例,并提供一个访问它的全局访问点。
懒汉式
这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁,所以严格意义上它并不算单例模式。 这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。
type Singleton struct {}var singleton *Singletonfunc GetInstance() *Singleton {// 如果为空,则创建单例if singleton == nil {singleton = &Singleton{}}return singleton}
线程安全
var (once sync.Onceinstance *Singleton)type Singleton struct {}func GetInstance() *Singleton {if instance == nil {once.Do(func() {instance = &Singleton{}})}return instance}
