单例模式(Singleton Pattern)是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在 Golang 中实现单例模式可以使用 sync 包提供的 Once 和 Mutex 来实现。

下面是一个使用 Golang 实现单例模式的示例代码:

package main

import (
    "fmt"
    "sync"
)

type Singleton struct {
    data string
}

var instance *Singleton
var once sync.Once

func GetInstance() *Singleton {
    once.Do(func() {
        instance = &Singleton{"Hello World!"}
    })
    return instance
}

func main() {
    s1 := GetInstance()
    s2 := GetInstance()

    if s1 == s2 {
        fmt.Println("Same instance")
    } else {
        fmt.Println("Different instance")
    }
}

在上面的代码中,我们定义了一个 Singleton 结构体,该结构体包含一个 data 字段。我们还定义了一个全局变量 instance,用于存储 Singleton 的唯一实例。

在 GetInstance 函数中,我们使用 sync.Once 来保证 instance 只被初始化一次。sync.Once 会在第一次调用 Do 方法时执行指定的函数,后续调用将被忽略。因此,只要我们通过 GetInstance 方法获取 instance,就可以保证 Singleton 的唯一性。

最后,在 main 函数中,我们分别使用 GetInstance 方法获取 Singleton 实例,并比较它们的地址是否相同。如果相同,则说明它们是同一个实例;否则,它们是不同的实例。

标签: none

添加新评论