当前位置: 首页 > 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的包初始化机制,在程序启动时就创建实例。

相关文章:

  • 互联网服务中心杭州百度快照优化排名推广
  • 怎样建设网站流程谷歌seo运营
  • 做精细化工网站网站管理工具
  • 重庆网站首页排名公司阿里云服务器
  • 服装设计公司简介范文上海网站排名seo公司哪家好
  • 外国大气网站今日热点新闻事件摘抄
  • Spring学习笔记【8】
  • 八股文——JAVA基础:基本数据类型与包装类的区别
  • 【Ansible】Ansible入门
  • 数的范围(连续数字边界)
  • OceanBase向量检索在货拉拉的探索和实践
  • 论文阅读:A Survey on Large Language Models for Code Generation
  • PYTHON从入门到实践5-列表操作
  • DDNS-GO 使用教程:快速搭建属于自己的动态域名解析服务(Windows 版)
  • SpringBoot基于JavaWeb的城乡居民基本医疗信息管理系统
  • 《汇编语言:基于X86处理器》第4章 复习题和练习,编程练习
  • 工作流引擎技术方案<初版>
  • 逆向入门(8)汇编篇-rol指令的学习
  • JVM 中的 GC 算法演进之路!(Serial、CMS、G1 到 ZGC)
  • 基于 opencv+yolov8+easyocr的车牌追踪识别
  • WinAppDriver 自动化测试:Python篇
  • 达梦数据库安装
  • 【网络实验】-配置用户登录
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第一节多元函数的基本概念
  • UniApp 开发第一个项目
  • 【kubernetes】--Service