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

Go语言实现单例模式

单例模式

        单例模式分为饿汉和懒汉模式,前者是在程序启动的时候就初始化一个单例对象,后者是使用到这个单例的时候,才会初始化一个单例对象。

饿汉模式

package main

import "fmt"

type Singleton struct {
}

var instance *Singleton = &Singleton{}

func GetInstance() *Singleton {
	return instance
}
func main() {
	s1 := GetInstance()
	s2 := GetInstance()
	fmt.Printf("%p\n", s1)
	fmt.Printf("%p\n", s2)
}

懒汉模式

package main

import (
	"fmt"
	"sync"
)

type Singleton struct {
}

var instance *Singleton
var once sync.Once

func GetInstance() *Singleton {
	once.Do(func() {
		instance = &Singleton{}
	})
	return instance
}
func main() {
	s1 := GetInstance()
	s2 := GetInstance()
	fmt.Printf("%p\n", s1)
	fmt.Printf("%p\n", s2)
}

打印出来的地址值是一样的,说明s1和s2是同一个对象。

http://www.dtcms.com/a/17002.html

相关文章:

  • 【k8s应用管理】kubernetes 安全机制
  • 内容测试2
  • 微软AutoGen介绍——Managing State保存并加载持续会话的Agents和Teams
  • docker Desktop安装WSL --update报错问题
  • 科普:数据仓库中的“指标”和“维度”
  • 选择排序
  • 用nginx正向代理https网站
  • 面向对象程序设计-实验七
  • java下载多个JDK版本,debian12
  • Linux下MySQL的简单使用
  • 寻找两个有序数组的中位数
  • 一文了解zookeeper
  • Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
  • Sora平替|有言AI数字人视频生成工具“极简实操”
  • arduino扩展:Arduino Mega 控制 32 个舵机(参考表情机器人)
  • 【Map vs Set】:Java数据存储的“双子星”对决
  • RabbitMQ配置SSL证书
  • 在 Crates.io 上发布 Crate 的全流程指南
  • C++ 完美转发:泛型编程中的参数无损传递
  • 为AI聊天工具添加一个知识系统 之103 详细设计之44 自性三藏 之4 祖传代码 之2
  • Java 大视界 -- 量子计算时代 Java 大数据的潜在变革与应对策略(88)
  • 深度学习框架探秘|Keras 应用案例解析以及 Keras vs TensorFlow vs PyTorch
  • ‌CBA认证‌(业务架构师认证)简介---适用人群、考试内容与形式、含金量与职业前景,以及‌CBA、TOGAF认证对比表格
  • 什么是弧形光源
  • 【认证授权FAQ】HP Anyware LLS服务器常用命令
  • 【第2章:神经网络基础与实现——2.4 实战案例:使用TensorFlow或PyTorch实现简单的MLP模型】
  • 硬件学习笔记--42 电磁兼容试验-6 传导差模电流干扰试验介绍
  • 库里存储的数据有大量回车时,该如何进行存取
  • 机柜机箱制冷风扇在使用过程中突然停止运转的原因
  • 【教程】比亚迪车机接入AI大模型语音助手