🔴قابلیت sync.WaitGroup ویژگی های جدید گولنگ نسخه 1.25
در نسخه Go 1.25**، یک متد جدید به `sync.WaitGroup` اضافه شده به نام
🧠 چرا
در نسخههای قبلی برای اجرای goroutine همراه با شمارنده
روش قدیمی:
اگر
---
✅ روش جدید:
در Go 1.25، این الگو ساده شده:
همزمان
✨ مثال کامل
خروجی ممکن:
📌 مزایای
| مزیت | توضیح |
| -------------------------------------- | ---------------------------- |
| ✅ کد تمیزتر | نیازی به
| 🧠 جلوگیری از خطاهای رایج | مثل فراموشی
| 🧵 مناسب برای patternهای goroutine سبک | موازیسازی سریع و امن |
---
⚠️ نکته مهم
*
* برای استفاده از آن، باید مطمئن باشید که پروژهتان با Go 1.25 یا بالاتر کامپایل میشود.
* این متد دقیقاً مثل
https://t.iss.one/gopher_academy
#learn
در نسخه Go 1.25**، یک متد جدید به `sync.WaitGroup` اضافه شده به نام
Go()
** که هدفش سادهسازی اجرای goroutineها همراه با شمارندهی WaitGroup است.🧠 چرا
WaitGroup.Go()
اضافه شده؟در نسخههای قبلی برای اجرای goroutine همراه با شمارنده
WaitGroup`، باید دستی `Add()
و Done()
را بنویسید:روش قدیمی:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
doWork()
}()
اگر
Add
یا Done
را فراموش میکردی یا ترتیبش اشتباه بود، ممکن بود برنامه بنبست (deadlock) بشه یا goroutineها نشمارده بشن.---
✅ روش جدید:
wg.Go(fn)
در Go 1.25، این الگو ساده شده:
var wg sync.WaitGroup
wg.Go(func() {
doWork()
})
همزمان
Add(1)
انجام میشه و داخل goroutine بهطور خودکار Done()
صدا زده میشه—دیگه لازم نیست دستی چیزی بنویسی.✨ مثال کامل
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 3; i++ {
i := i // capture variable
wg.Go(func() {
fmt.Println("working on task", i)
})
}
wg.Wait()
fmt.Println("All tasks done.")
}
خروجی ممکن:
working on task 0
working on task 1
working on task 2
All tasks done.
📌 مزایای
Go()
| مزیت | توضیح |
| -------------------------------------- | ---------------------------- |
| ✅ کد تمیزتر | نیازی به
Add
و Done
نیست || 🧠 جلوگیری از خطاهای رایج | مثل فراموشی
Done()
|| 🧵 مناسب برای patternهای goroutine سبک | موازیسازی سریع و امن |
---
⚠️ نکته مهم
*
Go()
فقط از Go 1.25 در دسترس است.* برای استفاده از آن، باید مطمئن باشید که پروژهتان با Go 1.25 یا بالاتر کامپایل میشود.
* این متد دقیقاً مثل
go func(){...}()
عمل میکند، فقط با مدیریت داخلی Add
و Done
.https://t.iss.one/gopher_academy
#learn
Telegram
Gopher Academy
🕸 Gopher Academy
🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers
حمایت مالی:
https://www.coffeete.ir/mrbardia72
ادمین:
@mrbardia72
🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers
حمایت مالی:
https://www.coffeete.ir/mrbardia72
ادمین:
@mrbardia72
https://www.linkedin.com/posts/raikaco_%D8%B4%D8%B1%DA%A9%D8%AA-%D8%B1%D8%A7%DB%8C%DA%A9%D8%A7-%D8%A8%D9%87-%D8%AF%D9%86%D8%A8%D8%A7%D9%84-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3-golang-activity-7352296276140462080-jiDq?utm_medium=ios_app&rcm=ACoAABYjZA0BaacbmqPNu0wyeB2And2nS6JeAfg&utm_source=social_share_send&utm_campaign=copy_link
#jobs
#jobs
Linkedin
🟠 شرکت رایکا به دنبال یک برنامهنویس Golang با تجربه و مسلط به مفاهیم شبکه است. | Raika | رایکا
🟠 شرکت رایکا به دنبال یک برنامهنویس Golang با تجربه و مسلط به مفاهیم شبکه است.
🔸مهارتهای مورد نیاز:
• تسلط بالا به Golang و اصول Concurrency و Parallel Processing
• آشنایی با پروتکلهای شبکه (TCP/IP, HTTP)
• تسلط به پایگاههای داده SQL و NoSQL (PostgreSQL…
🔸مهارتهای مورد نیاز:
• تسلط بالا به Golang و اصول Concurrency و Parallel Processing
• آشنایی با پروتکلهای شبکه (TCP/IP, HTTP)
• تسلط به پایگاههای داده SQL و NoSQL (PostgreSQL…