golang中的sync.Once可以让代码只执行一次,比如:
func do() { fmt.Println(2) } func main() { a := sync.Once{} for i := 0; i < 100; i++ { go a.Do(do) } }
输出为:
GOROOT=E:\go #gosetup
GOPATH=E:\go_program;E:\go的环境变量 #gosetup
E:\go\bin\go.exe build -o C:\Windows\Temp\GoLand\___go_build_gee_123.exe gee/123 #gosetup
C:\Windows\Temp\GoLand\___go_build_gee_123.exe
2
Process finished with the exit code 0