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;
}