使用同步包只运行一次Golang代码的实例

51 阅读1分钟

这个例子告诉我们,即使我们多次调用某件事情,我们也只能做一次。这样的行为在避免浪费系统资源和其他更多的方面是非常有用的。

例子

正如你所看到的,尽管我们调用了三次函数,但它只打印了一次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