無錫企業(yè)網站seo/百度廣告投訴電話
sync.Once 是 Go 語言標準庫 sync 包提供的一個類型,它用于確保一個函數只會被執(zhí)行一次,即使在多個 goroutine 中同時調用。
sync.Once 包含一個 Do 方法,其簽名如下:
func (o *Once) Do(f func())
Do 方法接受一個函數作為參數,并且保證該函數只會被調用一次,即使在多個 goroutine 中同時調用 Do 方法。
通常,sync.Once 的用法是在需要確保某個操作只執(zhí)行一次的情況下使用,比如在初始化全局變量時。
以下是一個示例:
package mainimport ("fmt""sync"
)var (once sync.Oncenum int
)func setup() {num = 42fmt.Println("Setup complete")
}func main() {for i := 0; i < 3; i++ {once.Do(setup)fmt.Println(num)}
}
在上述示例中,setup 函數將被 sync.Once 確保只會執(zhí)行一次,即使在多次調用 once.Do(setup) 也是如此。這保證了 num 變量只會被初始化一次。