Golang에서 싱글톤 모드를 구현하는 방법에는 게으른 모드, 배고픈 모드, 이중 확인 모드의 세 가지가 있습니다. 다음으로 이 세 가지 구현 방법을 자세히 소개하고 구체적인 코드 예제를 제공하겠습니다.
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 }
이 코드에서 GetInstance 함수는 동기화 패키지를 전달합니다. Once 구조는 인스턴스가 처음 호출될 때만 생성되도록 보장합니다. 지연 모드를 구현할 때 동시성 안전성에 주의해야 합니다.
2. Hungry Man 모드
Hungry Man 모드는 프로그램 시작 시 싱글톤 인스턴스를 생성하는 것을 의미합니다. 다음은 Hungry Man 모드의 샘플 코드입니다.
package singleton type Singleton struct { } var instance *Singleton = &Singleton{} func GetInstance() *Singleton { return instance }
이 코드에서는 프로그램 생성 시 인스턴스가 생성됩니다. 패키지를 임포트할 때 Go 언어의 init 함수가 자동으로 호출되므로 Hungry 모드를 구현할 수 있습니다.
3. Double-Checked Locking
Double-checked 모드는 게으른 모드를 기반으로 최적화하는 방식으로, 이중 검사를 통해 게으른 모드의 싱글톤을 구현합니다. 다음은 double check 모드의 샘플 코드입니다.
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를 사용하고, 지연 모드 싱글톤 모드를 구현하기 위해 double check를 사용합니다.
위는 Golang에서 싱글톤 모드를 구현하는 세 가지 방법인 게으른 모드, 배고픈 모드, 이중 확인 모드입니다. 실제 요구 사항과 성능 요구 사항을 기반으로 싱글톤 패턴을 구현하려면 적절한 구현 방법을 선택하세요.
위 내용은 Golang에서 싱글톤 패턴을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!