Herkese merhaba!

Uzun yıllardır bol miktarda kişisel zaman ve enerji harcayarak bilgimizi hepinizle paylaşıyoruz. Ancak şu andan itibaren bu blogu çalışır durumda tutabilmek için yardımınıza ihtiyacımız var. Yapmanız gereken tek şey, sitedeki reklamlardan birine tıklamak olacaktır, aksi takdirde hosting vb. masraflar nedeniyle maalesef yayından kaldırılacaktır. Teşekkürler.

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.


Örnek


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()
}

Sonuç


Begin
Loaded
End
Begin
End
Begin
End