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

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.lqws.cn/news/513361.html

相关文章:

  • LVS-NAT负载均衡群集实战:原理、部署与问题排查
  • 小程序快速获取url link方法,短信里面快速打开链接
  • Spark Streaming 与 Flink 实时数据处理方案对比与选型指南
  • Flink2.0 配置 historyserver
  • 15个AI模拟面试平台 和 简历修改 / 真人面试平台
  • 云计算产业链
  • 用wordpress建日语外贸网站的优势
  • C# Avalonia 绑定模式 Mode 的区别,它们的应用场景
  • spring中的@Cacheable缓存
  • MicroPython网络编程:AP模式与STA模式详解
  • 【笔记——李沐动手学深度学习】2.3 线性代数
  • 【Python练习】012. 使用字符串的upper()方法将字符串转换为大写
  • 基于开源AI大模型、AI智能名片与S2B2C商城小程序的美食菜单社交化营销创新研究
  • 音频转换芯片DP7344兼容CS4344双通道24位DA转换器技术资料
  • 宠物养成小游戏流量主微信小程序开源
  • 小米互联应用曝高危漏洞,攻击者可绕过认证获取设备完全控制权
  • 使用GithubActions和腾讯CloudBase自动发布静态网页
  • 暴雨信创电脑代理商成功中标长沙市中医康复医院
  • 019 高校心理教育辅导系统技术解析:构建心理健康守护平台
  • aspose.word在IIS后端DLL中高并发运行,线程安全隔离
  • HarmonyNext动画大全02-显式动画
  • 从数据到决策:UI前端如何利用数字孪生技术提升管理效率?
  • 计算机网络 网络层:数据平面(二)
  • LeetCode 142题解 | 环形链表Ⅱ
  • 【MCP服务】蓝耘元生代 | MCP平台:部署时间服务器MCP,开启大模型交互新体验
  • [架构之美]Redis客户端命令指南
  • 左神算法之二叉树最大路径和问题
  • RedisVL EmbeddingsCache深度实践与最佳指南
  • LangGraph--基础学习(Human-in-the-loop 人工参与深入学习2)
  • 在智慧教育行业中,OPS插拔式电脑启到什么作用