Go语言中的单例模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言中的单例模式相关的知识,希望对你有一定的参考价值。

单例模式

使用单例的目的是为了保证在整个系统中存在唯一的实例

package main

import (
        "fmt"
        "sync"
)

type IntAndString struct {
        num int32
        str string
}

var m *IntAndString

var once sync.Once

func GetInstance() *IntAndString {
        once.Do(func() {
        m = &IntAndString{num:1, str:"fdjkslf"}
        })
        return m
}

func (m *IntAndString) String() {
        fmt.Printf("int %v, string %v
", m.num, m.str)
}

func main() {
        tmp := GetInstance()
        tmp.String()
        tmp.str = "hello"
        tmp1 :=  GetInstance()
        tmp1.String()
        tmp.String()
}

运行结果

int 1, string fdjkslf
int 1, string hello
int 1, string hello

以上是关于Go语言中的单例模式的主要内容,如果未能解决你的问题,请参考以下文章

Golang包学习9---单例模式

片段作为 Android 中的单例

单例设计模式原理详解Java/JS/Go/Python/TS不同语言实现

开发那些事儿:如何利用Go单例模式保障流媒体高并发的安全性?

Objective-C中的单例模式

python中的单例设计模式