golang 单例模式实现

Golang 单例模式的实现方式

Sync.Once

package singleton

import "sync"

type singleton struct {
	Name string;
}

var  instance *singleton
var once sync.Once

func GetInstance() *singleton{
	once.Do(func() {
		instance = &singleton{}
	})
	return instance;
}

Double Check

import "sync"

type singleton struct {
	Name string;
}

var  instance *singleton
var lock sync.Mutex

func GetInstance() *singleton{
	if instance==nil{
		lock.Lock()
		defer lock.Unlock()
		if instance==nil{
			instance = &singleton{}
		}
	}
	return instance;
	
}
原文地址:https://www.cnblogs.com/Jun10ng/p/12555228.html