千家信息网

Go语言中Once如何使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Go语言中Once如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。sync.Once是sync包中的一个对象,它只
千家信息网最后更新 2026年11月01日Go语言中Once如何使用

Go语言中Once如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

sync.Once是sync包中的一个对象,它只有一个方法Do,这个方法很特殊,在程序运行过程中,无论被多少次调用,只会执行一次。

1.适用场景:

在一个进程之中,如果一个函数里面的一部分代码,希望在很多协程都执行的时候,只被执行一次,那么Once便起到了作用。例如:初始化进程中的共享内存,它只希望被该进程初始化一次,其他协程不需要初始化操作。

例子:

结果分析:

从上面的输出结果可以看出,使用了once.Do之后,onceBody()函数中的代码只被调用了一次。其他的协程依然还在运行,但是并没有去执行onceBody()函数中的代码。

2. 源码如下所示:

Once的数据结构和函数实现如下所示:

备注:巧妙之处,doSlow函数中,计数器done的自增操作是写到了defer函数中,原因就是defer中的函数就算在panic的时候,也会被执行,这样就可以有效的避免panic的时候,Do函数的计数器失效,导致其他的协程会在调用一次f()中的代码。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

函数 代码 时候 进程 方法 结果 计数器 帮助 运行 语言 巧妙 有效 清楚 特殊 之中 作用 例子 内存 内容 原因 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 厦门中拓互联网络科技有限公司 狮子座互联网科技 深圳齐家互联网科技 苏州大垚互联网科技 四川狮子座互联网科技 互联网巨头投资的硬核科技 恒生科技互联网指数分析 互联网和高科技公司 农村开互联网科技讲堂 小米互联网科技园设置 山东星卡互联网科技有限公司官网 易企秀互联网科技是做什么的 互联网高科技行业有哪些企业 互联网公司属于科技吗 绵阳真晨互联网科技有限公司 互联网科技品牌 广东猫王互联网科技有限公司电话 银川新华互联网科技学校招聘 前海云享互联网科技 互联网扶贫科技 汽车互联网创新科技园 茂名市互联网科技产业园 湖北码尼互联网科技有限公司电话 消费医药和互联网科技 广西互联网科技孵化中心 如何创新互联网科技 四川慕妮娅互联网科技有限公司 艺电能源互联网科技有限公司招聘 杭州融税互联网科技有限公司
0