1. 程式人生 > >Go語言中的單例模式

Go語言中的單例模式

syn main 單例模式 return and type KS int pack

單例模式

使用單例的目的是為了保證在整個系統中存在唯一的實例

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\n", 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語言中的單例模式