Ответ
Singleton — это порождающий паттерн, гарантирующий, что у класса есть только один экземпляр, и предоставляющий глобальную точку доступа к нему. В Go реализуется через sync.Once для потокобезопасности.
package main
import (
"sync"
)
type Singleton struct {
value string
}
var (
instance *Singleton
once sync.Once
)
func GetInstance() *Singleton {
once.Do(func() {
instance = &Singleton{value: "initial value"}
})
return instance
}
Особенности:
- Гарантирует единственность экземпляра
- Ленивая инициализация (создание при первом вызове)
- Потокобезопасность через
sync.Once - Используется для логгеров, конфигов, подключений к БД
Видео-ответы
▶
▶
▶
▶