Go的单例模式

2021-03-07  本文已影响0人  本分撸码投资
package singleton

import (
    "fmt"
    "sync"
    "testing"
    "unsafe"
)
type Singleton struct {

}
var singleInstance *Singleton
var once sync.Once

func GetSingletonObj() *Singleton {
    once.Do(func() {
        fmt.Println("create Obj")
        singleInstance = new(Singleton)

    })
    return singleInstance
}
func TestGetSingletonObj(t *testing.T) {
    var wg sync.WaitGroup
    for i := 0; i < 10; i++ {
        wg.Add(1)
        go func() {
            obj:= GetSingletonObj()
            fmt.Println("obj")
            fmt.Printf("%x\n", unsafe.Pointer(obj))
            wg.Done()
        }()
    }
    wg.Wait()
}

上一篇下一篇

猜你喜欢

热点阅读