TGViewer
Go tests Go tests @golangtests · 7.84K subscribers
Post #858 3.25K
⚡ Полезный приём в Go — используем sync.Once, чтобы инициализировать значение только один раз.

Например, при загрузке ENV-переменных:


package config

import (
"os"
"sync"
)

var (
loadOnce sync.Once
envVars map[string]string
)

func GetEnvVars() map[string]string {
loadOnce.Do(func() {
envVars = map[string]string{
"DB_URL": os.Getenv("DB_URL"),
"API_KEY": os.Getenv("API_KEY"),
}
})
return envVars
}


Теперь переменные окружения загружаются лишь один раз, а дальше берутся из памяти.

#golang #concurrency #tips
  • 👎 13
  • ❤ 6
  • 👍 3
  • 🔥 2
More from @golangtests
  1. Sep 26, 2026Nil-интерфейс в Go: почему err == nil выдаёт false? Nil-интерфейс в Go ломает даже опытных…
  2. Sep 23, 2026Задача по Go: `select` и побочные эффекты Что выведет программа? package main import "fmt"…
  3. Sep 23, 2026Не застревайте в прошлом — учитесь новым навыкам и ИИ Чтобы успевать за требованиями рынка…
  4. Sep 13, 2026👣 Задача на Go 1.27: concurrent job scheduler с generic methods Нужно реализовать библиот…
  5. Sep 13, 2026🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть…
  6. Sep 2, 2026👣 Go 1.27: почему две разные closure внезапно могут иметь одинаковый адрес функции? Что в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →