iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Go语言中Once如何使用
  • 475
分享到

Go语言中Once如何使用

2024-04-02 19:04:59 475人浏览 独家记忆
摘要

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

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

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

1.适用场景:

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

例子:

结果分析:

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

2. 源码如下所示:

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

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

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

您可能感兴趣的文档:

--结束END--

本文标题: Go语言中Once如何使用

本文链接: https://www.lsjlt.com/news/58910.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go语言中Once如何使用
    Go语言中Once如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。sync.Once是sync包中的一个对象,它只有一个...
    99+
    2024-04-02
  • Go语言中copy()如何使用
    这篇文章主要介绍了Go语言中copy()如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中copy()如何使用文章都会有所收获,下面我们一起来看看吧。在Go语言中,copy()用于复制切片,可以将...
    99+
    2023-07-05
  • go语言中return如何使用
    本篇内容介绍了“go语言中return如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在go语言中,return关键字用于终止函数并可...
    99+
    2023-07-05
  • go语言中append()如何使用
    本篇内容介绍了“go语言中append()如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在go语言中,append()函数用于为切片...
    99+
    2023-07-05
  • Go语言中error如何使用
    这期内容当中小编将会给大家带来有关Go语言中error如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. error介绍error其实就是实现了Error()函数...
    99+
    2024-04-02
  • C语言中#pragma once的作用
    目录1、#pragma once有什么作用?2、两者的使用方式有何区别?3、两者各有何特点?(1)#ifndef(2)#pragma once4、两者之间有什么联系?1、#pragm...
    99+
    2024-04-02
  • go语言中的WaitGroups如何使用
    这篇文章主要讲解了“go语言中的WaitGroups如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言中的WaitGroups如何使用”吧!什么是WaitGroups?WaitG...
    99+
    2023-07-05
  • Go语言中flag包如何使用
    今天就跟大家聊聊有关Go语言中flag包如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。这一章所学的任何代码,都要编译成.exe才能跑,禁止右...
    99+
    2024-04-02
  • Go语言中的sync.Mutex如何使用
    这篇文章主要介绍了Go语言中的sync.Mutex如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中的sync.Mutex如何使用文章都会有所收获,下面我们一起来看看吧。背景多个协程操作中经常出现...
    99+
    2023-07-05
  • 如何在Go语言中使用NumPy?
    NumPy是一个Python库,它提供了高效的多维数组对象以及用于处理这些数组的工具。它是科学计算和数据分析中的重要组成部分。但是,如果您正在使用Go语言进行开发,您可能会感到困惑,因为Go语言并没有内置NumPy库。在本文中,我们将讨论...
    99+
    2023-08-28
    numpy 对象 教程
  • go语言中的const如何使用
    这篇文章主要讲解了“go语言中的const如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言中的const如何使用”吧!在go语言中,const关键字可定义常量,用于存储不会改变...
    99+
    2023-07-05
  • Go语言包如何使用
    本篇内容介绍了“Go语言包如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!包(package)是多个Go源码的集合,是一种高级的代码复...
    99+
    2023-07-04
  • Go语言sync.Cond如何使用
    本篇内容介绍了“Go语言sync.Cond如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基本使用1 定义sync.Cond是Go语言...
    99+
    2023-07-05
  • 如何在Go语言中使用面量?
    在 go 中使用接口包括:定义一个接口,包含方法签名。实现接口,为方法提供实现。将类型转换为接口类型并调用其方法。接口促进代码重用、测试方便和可扩展性。 如何在 Go 中使用接口? 接...
    99+
    2024-04-03
    go语言 面量
  • Go语言中如何使用结构体
    这篇文章将为大家详细讲解有关Go语言中如何使用结构体,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。结构体结构体是 go 语言中一个比较重要的概念,在 c  语言中也有类似的东西。由...
    99+
    2023-06-15
  • 如何在Go语言中使用数组?
    Go语言是一种高效、简洁的编程语言,它具有很多强大的特性,其中之一就是数组。数组是一种非常基础的数据结构,它可以让我们存储多个相同类型的值,并且可以通过下标来访问它们。在本文中,我们将详细介绍如何在Go语言中使用数组。 一、声明数组 在Go...
    99+
    2023-07-19
    关键字 框架 数组
  • go语言中build命令如何使用
    这篇文章主要介绍了go语言中build命令如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇go语言中build命令如何使用文章都会有所收获,下面我们一起来看看吧。在go语言中,“go build”命令主要...
    99+
    2023-07-05
  • 如何在Go语言中使用函数?
    Go语言是一种现代化的编程语言,它拥有高效的并发性能和强大的编译能力,越来越多的程序员开始使用它来开发软件。在Go语言中,函数是一种非常重要的概念,本篇文章将会介绍如何在Go语言中使用函数。 一、函数的定义 在Go语言中,函数的定义格式如下...
    99+
    2023-08-13
    数据类型 教程 函数
  • Go语言中如何使用NumPy对象?
    NumPy是一个用于数值计算的Python库,它提供了高效的多维数组对象和各种派生对象(如掩码数组和矩阵),并且包含了大量的数学函数库,可以方便地完成各种数值计算任务。虽然NumPy是一个Python库,但是我们也可以在Go语言中使用Nu...
    99+
    2023-08-28
    numpy 对象 教程
  • Go语言中结构体如何使用
    本篇文章为大家展示了Go语言中结构体如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。结构体Go语言中的基本数据类型可以表示一些事物的基本属性,但是当我们想表达...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作