Go tests
7.72K subscribers
301 photos
94 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥полезные ит-каналы

https://t.me/Golang_google - Golang программирование

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golang_jobsgo - go chat jobs
Download Telegram
💡 Вместо отправки сигнала в канал, подумай о close() или sync.WaitGroup для завершения горутины.

Оба варианта:

Работают, даже если никто не читает из канала
Позволяют нескольким горутинам реагировать на завершение

Такой подход делает код чище и избегает утечек.

#golang #concurrency
👍10🔥1
Полезный приём в 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
👎83👍1🔥1