在Go语言中,`sync.Once`是一个并发安全的单例初始化器(singleton initializer)。它提供了一种简单的方法来确保某个代码块只会被执行一次,即使在并发环境中也是如此。 `sync.Once`类型有一个`Do`方法,该方法接收一个函数作为参数,并确保该函数只会被执行一次。如果多次调用`Do`方法,只有第一次调用会执行传入的函数,后续的调用将被忽略。 下面是一个使用`sync.Once`的示例: ```go package main import ( "fmt" "sync" ) var once sync.Once func main() { // 输出:"Hello, World!" once.Do(func() { fmt.Println("Hello, World!") }) // 输出:"" once.Do(func() { fmt.Println("This will not be executed") }) } ``` 在上面的示例中,我们创建了一个`sync.Once`类型的变量`once`。然后,我们调用`once.Do`方法并传入一个打印"Hello, World!"的函数。由于`sync.Once`保证了并发安全性,所以只会在第一次调用`once.Do`时执行传入的函数,后续的调用将被忽略。只有"Hello, World!"被打印出来,而"This will not be executed"不会被打印。 [2023-11-09 18:17:10 | AI写代码神器 | 301点数解答]