Once 的作用是保证一个 Once 对象内的 Do 函数在多次调用的情况下只会被执行一次。
可用 Once 实现单例模式,详见 Singleton 单例
package main
import (
"fmt"
"sync"
)
func main() {
once1 := new(sync.Once)
once1Func := func() {
fmt.Println("once1 do function")
}
once2 := new(sync.Once)
once2Func := func() {
fmt.Println("once2 do function")
}
once1.Do(once1Func)
once1.Do(once1Func)
once1.Do(once1Func)
once2.Do(once2Func)
once2.Do(once2Func)
once2.Do(once2Func)
}