天天看点

golang单例

package singleton 
                                                
import ( 
    "fmt"
) 
                                                
type Singleton interface { 
    SaySomething() 
} 
                                                
type singleton struct { 
    text string 
} 
                                                
var oneSingleton Singleton 
                                                
func NewSingleton(text string) Singleton { 
    if oneSingleton == nil { 
        oneSingleton = &singleton{ 
            text: text, 
        } 
    } 
    return oneSingleton 
} 
                                                
func (this *singleton) SaySomething() { 
    fmt.Println(this.text) 
}


来测试下:

package main 
                        
import ( 
    "Hello/singleton"
) 
                        
func main() { 
    mSingleton, nSingleton := singleton.NewSingleton("hello"), singleton.NewSingleton("hi") 
    mSingleton.SaySomething() 
    nSingleton.SaySomething() 
}
           

输出结果:

golang单例