🚀 Ошибки с
В статье “Avoiding Common sync.WaitGroup Mistakes in Go” Джон Калхаун разбирает, как Go 1.25 помогает избежать частых ошибок при использовании
### 🔹 Ошибка:
Часто встречающийся неправильный код:
❌ Проблема: wg.Add(1) вызывается уже внутри горутины. Она может не успеть выполниться до wg.Wait(), из-за чего программа зависает или ведёт себя некорректно.
✅ В Go 1.25 go vet теперь предупреждает:
“WaitGroup.Add called from inside new goroutine”
Правильный вариант:
🔹 Новый метод wg.Go()
Go 1.25 добавил удобный метод Go, который сам вызывает Add и Done:
Этот код эквивалентен такому:
✅ Итог
- go vet теперь ловит ошибки, когда wg.Add вызывается внутри горутины.
- Новый метод wg.Go(...) упрощает код и снижает риск ошибок.
Подробнее: https://www.calhoun.io/avoiding-common-sync-waitgroup-mistakes/
sync.WaitGroup
в Go и что нового в Go 1.25 В статье “Avoiding Common sync.WaitGroup Mistakes in Go” Джон Калхаун разбирает, как Go 1.25 помогает избежать частых ошибок при использовании
sync.WaitGroup
. ### 🔹 Ошибка:
wg.Add
внутри горутины Часто встречающийся неправильный код:
for i := 0; i < 5; i++ {
go func() {
wg.Add(1)
defer wg.Done()
// работа…
}()
}
wg.Wait()
❌ Проблема: wg.Add(1) вызывается уже внутри горутины. Она может не успеть выполниться до wg.Wait(), из-за чего программа зависает или ведёт себя некорректно.
✅ В Go 1.25 go vet теперь предупреждает:
“WaitGroup.Add called from inside new goroutine”
Правильный вариант:
for i := 0; i < 5; i++ {
wg.Add(1)
go func() {
defer wg.Done()
// работа…
}()
}
wg.Wait()
🔹 Новый метод wg.Go()
Go 1.25 добавил удобный метод Go, который сам вызывает Add и Done:
for i := 0; i < 5; i++ {
wg.Go(func() {
// работа…
})
}
wg.Wait()
Этот код эквивалентен такому:
wg.Add(1)
go func() {
defer wg.Done()
f()
}()
✅ Итог
- go vet теперь ловит ошибки, когда wg.Add вызывается внутри горутины.
- Новый метод wg.Go(...) упрощает код и снижает риск ошибок.
Подробнее: https://www.calhoun.io/avoiding-common-sync-waitgroup-mistakes/
❤31👍9👏6🎉3🥰1
tgoop.com/golang_interview/1306
Create:
Last Update:
Last Update:
🚀 Ошибки с
В статье “Avoiding Common sync.WaitGroup Mistakes in Go” Джон Калхаун разбирает, как Go 1.25 помогает избежать частых ошибок при использовании
### 🔹 Ошибка:
Часто встречающийся неправильный код:
❌ Проблема: wg.Add(1) вызывается уже внутри горутины. Она может не успеть выполниться до wg.Wait(), из-за чего программа зависает или ведёт себя некорректно.
✅ В Go 1.25 go vet теперь предупреждает:
“WaitGroup.Add called from inside new goroutine”
Правильный вариант:
🔹 Новый метод wg.Go()
Go 1.25 добавил удобный метод Go, который сам вызывает Add и Done:
Этот код эквивалентен такому:
✅ Итог
- go vet теперь ловит ошибки, когда wg.Add вызывается внутри горутины.
- Новый метод wg.Go(...) упрощает код и снижает риск ошибок.
Подробнее: https://www.calhoun.io/avoiding-common-sync-waitgroup-mistakes/
sync.WaitGroup
в Go и что нового в Go 1.25 В статье “Avoiding Common sync.WaitGroup Mistakes in Go” Джон Калхаун разбирает, как Go 1.25 помогает избежать частых ошибок при использовании
sync.WaitGroup
. ### 🔹 Ошибка:
wg.Add
внутри горутины Часто встречающийся неправильный код:
for i := 0; i < 5; i++ {
go func() {
wg.Add(1)
defer wg.Done()
// работа…
}()
}
wg.Wait()
❌ Проблема: wg.Add(1) вызывается уже внутри горутины. Она может не успеть выполниться до wg.Wait(), из-за чего программа зависает или ведёт себя некорректно.
✅ В Go 1.25 go vet теперь предупреждает:
“WaitGroup.Add called from inside new goroutine”
Правильный вариант:
for i := 0; i < 5; i++ {
wg.Add(1)
go func() {
defer wg.Done()
// работа…
}()
}
wg.Wait()
🔹 Новый метод wg.Go()
Go 1.25 добавил удобный метод Go, который сам вызывает Add и Done:
for i := 0; i < 5; i++ {
wg.Go(func() {
// работа…
})
}
wg.Wait()
Этот код эквивалентен такому:
wg.Add(1)
go func() {
defer wg.Done()
f()
}()
✅ Итог
- go vet теперь ловит ошибки, когда wg.Add вызывается внутри горутины.
- Новый метод wg.Go(...) упрощает код и снижает риск ошибок.
Подробнее: https://www.calhoun.io/avoiding-common-sync-waitgroup-mistakes/
BY Golang вопросы собеседований




Share with your friend now:
tgoop.com/golang_interview/1306