23/12/2019 - GO
Bu örnek bize, bir şeyi birçok kez çağırsak bile, sadece bir kez nasıl çalıştırabileceğimizi gösterir. Bu tür davranışlar, sistem kaynaklarını ve daha fazlasını israf etmekten kaçınmak için yararlıdır.
Aşağıda görebileceğiniz gibi, fonksiyonu üç kez çağırmamıza rağmen Loaded
yalnızca bir kez yazdıracaktır.
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