Вопрос: Как использовать `sync.Once` для ленивой инициализации ресурса?
Python
Senior
Без компании
Вопрос: Как использовать `sync.Once` для ленивой инициализации ресурса?
Ответы
```go
var once sync.Once
var conn *sql.DB
var connErr error
func DB() (*sql.DB, error) {
once.Do(func() {
conn, connErr = sql.Open("postgres", dsn)
})
return conn, connErr
}
```
**Как это работает:** `Once` гарантирует, что инициализация выполнится максимум один раз даже при конкурентном доступе.