这个例子告诉我们,即使我们多次调用某件事情,我们也只能做一次。这样的行为在避免浪费系统资源和其他更多的方面是非常有用的。
例子
正如你所看到的,尽管我们调用了三次函数,但它只打印了一次Loaded。
package pkg
import (
"fmt"
"sync"
)
var o sync.Once
func LoadConfig() {
fmt.Println("Begin")
o.Do(func() {
fmt.Println("Load")
})
fmt.Println("End")
}
package main
import (
"github.com/inanzzz/football/internal/pkg"
}
func main() {
pkg.LoadConfig()
pkg.LoadConfig()
pkg.LoadConfig()
}
结果
Begin
Loaded
End
Begin
End
Begin
End