在Java中,单例模式的实现主要依靠类中的静态字段。在Go语言中,没有静态类成员,所以我们使用的包访问机制和函数来提供类似的功能。来看下下面的例子:

package singletonimport ("fmt"
)type Singleton interface {SaySomething()
}type singleton struct {text string
}var oneSingleton Singletonfunc NewSingleton(text string) Singleton {if oneSingleton == nil {oneSingleton = &singleton{text: text,}}return oneSingleton
}func (this *singleton) SaySomething() {fmt.Println(this.text)
}

来测试下:

package mainimport ("Singleton/singleton"
)func main() {mSingleton, nSingleton := singleton.NewSingleton("hello"), singleton.NewSingleton("hi")mSingleton.SaySomething()nSingleton.SaySomething()
}//----------------------- goroutine 测试 ------------------------
func main() {c := make(chan int)go newObject("hello", c)go newObject("hi", c)<-c<-c
}func newObject(str string, c chan int) {nSingleton := singleton.NewSingleton(str)nSingleton.SaySomething()c <- 1
}

输出结果:

转载于:https://blog.51cto.com/liuxp0827/1354360

Golang 单例模式 singleton pattern相关推荐

  1. 【设计模式】单例模式 Singleton Pattern

    通常我们在写程序的时候会碰到一个类只允许在整个系统中只存在一个实例(Instance)  的情况, 比如说我们想做一计数器,统计某些接口调用的次数,通常我们的数据库连接也是只期望有一个实例.Windo ...

  2. Net设计模式实例之单例模式( Singleton Pattern)

    一.单例模式简介(Brief Introduction) 单例模式(Singleton Pattern),保证一个类只有一个实例,并提供一个访问它的全局访问点.单例模式因为Singleton封装它的唯 ...

  3. 单例模式 Singleton Pattern

    源地址 单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该 ...

  4. Python 设计模式: 单例模式(singleton pattern)

    2019独角兽企业重金招聘Python工程师标准>>> 如果想在整个程序的运行过程中,某个类只有一个实例的话,可以通过单例模式来实现. 在 Python 中实现单例模式有很多种方式, ...

  5. 解读设计模式----单例模式(Singleton Pattern)

    单例模式可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计中,有很多情况需要确保一个类只能有一个实例.从这句话可以看出,Singleton模式的核心:如何控制用户使用new对一个 ...

  6. .NET设计模式(1):1.1 单例模式(Singleton Pattern)

    概述 单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点. 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单 ...

  7. Java设计模式之单例模式(Singleton Pattern)

    **单例模式:用来创造独一无二的,只能有一个实例的对象设计模式.单例模式确保一个类只有一个实例,并提供一个全局访问点.**相比于全局变量(对对象的静态引用),单例模式可以延迟实例化,而且全局变量不能保 ...

  8. HeaFirst设计模式-单件模式[单例模式](Singleton Pattern)

    深入分析单件模式 本次主要介绍的内容有 单件模式 单线程下的单件模式实现 多线程下实现单件模式出现的问题分析 JMM内存模型 多线程下的单件模式实现的三种方式 这些内容,可以从最根本理解单例模式的代码 ...

  9. 【设计模式笔记】单例模式Singleton Pattern

    单例模式是比较简单的一个模式,项目中也经常用得到. 实现细节 将类的构造方法设置为私有的(private),通过个公有的(public)的方法来获取类的实例. 代码示例 public class Si ...

最新文章

  1. tar自动打包指定文件夹中的文件到指定目录
  2. 函数或变量 rtenslearn_c 无法识别_Stata:过度识别检验一文读懂
  3. 我国网民规模已达7.51亿 但网络安全值得警惕
  4. java web核心知识_JAVA web 相关知识点
  5. SVN提交时出现locked错误解决办法
  6. 基于分层注意力网络的方面情感分析
  7. 飞鸽传书 的内置的计算机处理
  8. 用C#实现MVC(Model View Control)模式介绍
  9. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_4 mybatis中使用unpooled配置连接池的原理分析...
  10. 测试用例设计方法——正交实验法
  11. Code Review之前中后
  12. Java虚拟机及运行时数据区
  13. 基于MATLAB的数字图像处理系统设计
  14. Android 10.0 Launcher3双层(抽屉)高斯模糊(毛玻璃)背景功能的实现
  15. igraph入门教程
  16. 阿里阿里,搞不定政企
  17. elasticsearch的master选举
  18. 使用python(turtle)画小猪佩奇
  19. 2018_Csrnet: Dilated convolutional neural networks for understanding the highly congested scenes
  20. 圣诞老人python代码_Python秘密圣诞老人程序如何取得更高的成功R

热门文章

  1. 面试题:如何理解 Linux 的零拷贝技术?
  2. 百度黄埔学院计划第四期来了!
  3. Transformer的前世今生
  4. NeurIPS 2020 :ReID任务大幅领先,港中文开源自步对比学习框架,充分挖掘无监督学习样本...
  5. 比Keras更好用的机器学习“模型包”:无需预处理,0代码上手做模型
  6. PyTorch Trick集锦
  7. 自监督媲美全监督,港中文、商汤场景去遮挡方法入选 CVPR 2020 Oral
  8. CVPR2020 Oral | 港中文-商汤等开源:自监督场景去遮挡
  9. 活久见!技术面试官竟然给我出了一个脑筋急转弯,还问我王者荣耀什么段位?...
  10. 好用到哭!你需要立刻学会的20个Python代码段