Golang でシングルトン モードを実装するには、遅延モード、ハングリー モード、ダブル チェック モードの 3 つの方法があります。次に、これら 3 つの実装方法を詳しく紹介し、具体的なコード例を示します。
1. 遅延モード
遅延モードとは、最初に呼び出されたときにのみシングルトン インスタンスが作成されることを意味します。以下は遅延モードのサンプル コードです:
package singleton import ( "sync" ) type Singleton struct { } var instance *Singleton var once sync.Once func GetInstance() *Singleton { once.Do(func() { instance = &Singleton{} }) return instance }
In このコードでは、GetInstance 関数は同期パッケージの Once 構造体を使用して、初めて呼び出されたときにのみインスタンスが作成されるようにします。遅延モードを実装する場合は、同時実行の安全性に注意を払う必要があります。
2. ハングリーマン モード
ハングリーマン モードとは、プログラムの開始時に単一のインスタンスを作成することを指します。以下はハングリーマン モードのサンプル コードです:
package singleton type Singleton struct { } var instance *Singleton = &Singleton{} func GetInstance() *Singleton { return instance }
Inこのコードでは、プログラムの起動時にインスタンスが作成されます。パッケージインポート時にGo言語のinit関数が自動的に呼び出されるため、ハングリーモードが実現できます。
3. Double-Checked Locking
Double-check モードは Lazy モードをベースに最適化する方法であり、Double-Check によって Lazy モードのシングルトンを実現します。以下はダブル チェック モードのサンプル コードです。
package singleton import "sync" type Singleton struct { } var instance *Singleton var mu sync.Mutex func GetInstance() *Singleton { if instance == nil { mu.Lock() defer mu.Unlock() if instance == nil { instance = &Singleton{} } } return instance }
このコードでは、同時実行の安全性を確保するために sync.Mutex が使用され、遅延モードのシングルトン モードを実装するためにダブル チェックが使用されます。
上記は、Golang におけるシングルトン モードの 3 つの実装方法です。レイジー モード、ハングリー モード、ダブル チェック モードです。実際のニーズとパフォーマンス要件に基づいて、シングルトン パターンを実装するための適切な実装方法を選択します。
以上がGolangにおけるシングルトンパターンの実装方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。