当前位置: 首页 > ai >正文

Golang单例实现

        Go语言中,实现单例模式的方式有很多种。单例模式确保一个类只有一个实例,并提供一个全局访问点Go语言没有类的概念,但是可以通过结构体、函数和包级变量来实现类似的功能

懒汉实现

type Product interface {DoSomething()
}type singletonProduct struct{}func (p *singletonProduct) DoSomething() {}var instanceOnce struct {instance Productonce sync.Once
}func GetInstance() Product {instanceOnce.once.Do(func() {instanceOnce.instance = &singletonProduct{}})return instanceOnce.instance 
}
  • singletonProduct使用小写开头,防止使用者自己创建实例,提供GetInstance方法作为获取实例的唯一入口。
  • 使用sync.Once处理单次创建问题。

饿汉实现

package singletontype Product interface {DoSomething()
}type singletonProduct struct{}func (p *singletonProduct) DoSomething() {}var instance = &singletonProduct{}func GetInstance() Product {return instance
}
  • 利用Go的包初始化机制,在程序启动时就创建实例。
http://www.xdnf.cn/news/14613.html

相关文章:

  • 如何将FPGA设计验证效率提升1000倍以上(1)
  • Vue 英雄列表搜索与排序功能实现
  • Python训练营-Day40-训练和测试的规范写法
  • 鸿蒙开发深入解析:Data Ability 数据共享机制全面指南
  • FPGA基础 -- Verilog 验证平台之 **cocotb 验证 `阶乘计算模块(factorial)` 的例子**
  • 攻防世界-MISC-MeowMeowMeow
  • PostgreSQL(知识片):查询/计算Selectivity(可选性)
  • 将两个mp4的文件合并在一起形成新的文件
  • 从0开始学习R语言--Day31--概率图模型
  • 【MV】编排8:基于时间线数据多层分段避免过度拟合特定歌曲
  • 《C++初阶之类和对象》【初始化列表 + 自定义类型转换 + static成员】
  • FunASR搭建语音识别服务和VAD检测
  • 飞算 JavaAI 插件炸场!一小时搭图书管理系统
  • Java并发编程中高效缓存设计的哲学
  • Word2Vec 原理是什么
  • vscode 插件
  • Java底层原理:深入理解JVM内存管理机制
  • C#图书管理系统笔记(残缺版)
  • SQLite3 在嵌入式系统中的应用指南
  • Apache SeaTunnel Spark引擎执行流程源码分析
  • Java SE - 图书管理系统模拟实现
  • 国产麒麟 安装可视化数据库软件DBeaver(图解)
  • 前端开发入门指南:掌握HTML基础
  • 【RK3568 嵌入式linux QT开发笔记】 二维码开源库 libqrencode 交叉静态编译和使用
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DrinkWater(喝水记录组件)
  • DeepSeek中的提示库及其用法示例
  • 用于算法性能预测的 GNN 框架
  • H5新增属性
  • Three.js 中自定义 UV 坐标贴图详解
  • Java数据结构第二十四期:探秘 AVL 树,当二叉搜索树学会 “自我调节”