golang单例模式实现的方法是什么

avatar
作者
猴君
阅读量:0

在Go语言中,可以通过如下方法实现单例模式:

  1. 基于sync.Once实现的单例模式:
package singleton  import "sync"  type singleton struct{}  var instance *singleton var once sync.Once  func GetInstance() *singleton {     once.Do(func() {         instance = &singleton{}     })     return instance } 

在这个例子中,通过sync.Once实现了只执行一次的功能,保证了实例只会被创建一次。

  1. 基于sync.Mutex实现的单例模式:
package singleton  import "sync"  type singleton struct{}  var instance *singleton var mu sync.Mutex  func GetInstance() *singleton {     mu.Lock()     defer mu.Unlock()      if instance == nil {         instance = &singleton{}     }     return instance } 

在这个例子中,通过sync.Mutex实现了互斥锁,保证了实例的创建和获取是线程安全的。

这两种方法都可以实现单例模式,具体选择哪种方式取决于实际需求和偏好。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!