go 语言中的单例讨论
最近在学习go语言,也想通过写设计模式的方式来学习
package designPattern
import "sync"
type singleton struct {
}
var single *singleton
var once sync.Once
func GetInstance() *singleton {
once.Do(func() {
single = &singleton{}
})
return single
}
这种代码充斥在网络上,设计有些把struct定义为Singleton包外可以访问,这些明显都是存在问题的。
在包外是需要通过GetInstance()方法来获取到singleton的引用,是有单例的效果。
但是在package内部,实际上是没办法实现单例的,因为可以实例化来创建,single = &singleton{}
所以我理解go的原生其实并没有很好的支持这个理论,在stackoverflow上也有人是这样来质疑的

本次只是记录下这个问题,希望以后能有一个确切的结论

浙公网安备 33010602011771号