Linux 拨号vps windows公众号手机端

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

lewis 8年前 (2017-05-12) 阅读数 8 #程序编程
文章标签 golang

在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实现了互斥锁,保证了实例的创建和获取是线程安全的。

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

版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门