sync.Once
是 Go 标准库提供的使函数只执行一次的实现,常应用于单例模式,sync.Once
仅提供了一个方法 Do
,参数 f
是对象初始化函数
func (o *Once) Do(f func())
利用 sync.Once
来实现单例模式:
package singleton
import (
"sync"
)
type singleton struct {}
var instance *singleton
var singletonOnce sync.Once
func GetInstance() *singleton {
singletonOnce.Do(func() {
instance = &singleton{}
})
return instance
}
网友评论