Go sync.Once代码示例

发布时间:2023-03-18浏览次数:0

支持注册ChatGPT Plus的OneKey虚拟卡
绑定Apple Pay、Google Pay、支付宝和微信支付进行日常消费

注册和了解更多 ->

silver

以下是Go语言中sync.Once代码示例:

package main

import (
    "fmt"
    "sync"
)

// 定义一个全局变量
var globalVar string

// 定义一个DoOnce函数,只能被执行一次
func DoOnce() {
    fmt.Println("执行 DoOnce 函数")
    globalVar = "Hello, world!"
}

func main() {
    var once sync.Once

    // 多次调用Do函数,但只有第一次成功执行
    for i := 0; i < 5; i++ {
        once.Do(DoOnce)
        fmt.Println("第", i, "次调用Do函数")
    }

    // 输出全局变量
    fmt.Println("全局变量:", globalVar)
}

运行结果:

执行 DoOnce 函数
0 次调用Do函数
1 次调用Do函数
2 次调用Do函数
3 次调用Do函数
4 次调用Do函数
全局变量: Hello, world!

从上面的运行结果可以看出,DoOnce函数只被执行了一次,全局变量globalVar也只被初始化了一次。而且多次调用Do函数并没有影响程序的正确性。这就是sync.Once的作用。它可以保证某些代码只被执行一次,而且它是并发安全的。

字节笔记本扫描二维码查看更多内容