Golang Insights – Telegram
Golang Insights
753 subscribers
116 photos
7 videos
47 files
131 links
Stay ahead in Golang development with Golang Insights, your go-to for the latest news, tips, tricks, and code examples tailored for Golang enthusiasts and professionals.

Group: https://news.1rj.ru/str/GolangEngineers
Download Telegram
عکس هایی که کلی حرف توش هست


☄️ @GoInsights | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
31
اولین نسخه از زبان GoSharp منتشر شد.

زبان GoSharp یک فورک از Golang هست که قراره فیچرها و بهینه‌سازی‌های زیادی رو داشته باشه.

با اولین فیچری که اضافه شد، شما می‌تونید فقط با نوشتن یک '?' ، خطا رو بدون نوشتن if err != nil برگردونید.

مخزن گیت‌هاب
https://github.com/0x9n0p/gosharp



☄️ @GoInsights | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
14811
یا فلت فلت باش یا ساختار دهی کن!!!


زمانی که یک پروژه یا پکیج جدید در زبان Go شروع می‌کنیم، اولین سوالی که پیش می‌آید این است که ساختار یا layout پروژه چگونه باید باشد؟

در زبان Go، هر پوشه یا دایرکتوری می‌تواند به عنوان یک package در نظر گرفته شود. وقتی کدی را در این محدوده می‌نویسید، این کد می‌تواند به طور مستقل از بقیه پروژه تست شود و همچنین به لحاظ دسترسی‌های public/private مدیریت شود.

داشتن یک ساختار منظم برای پروژه بسیار مهم است، اما از همه مهم‌تر این است که بتوانید به گونه‌ای ساختاردهی کنید که به مشکلاتی مانند import cycle برنخورید.

سوالی که برای برخی مطرح است این است که آیا ساختار فلت (flat) خوب است یا نه؟

شاید از دیدگاه بعضی افراد، فلت بودن نشانه‌ای از کمبود دانش فرد در ساختاردهی پروژه باشد، اما باید بدانید که فلت بودن مزایای خاص خود را دارد. البته این مزایا بیشتر در نوشتن پکیج‌ها قابل مشاهده است تا در برنامه‌های اجرایی؛ زیرا در برنامه‌های اجرایی که دارای main هستند، ممکن است با مشکلاتی مواجه شوید. اما برای نوشتن پکیج‌ها، فلت بودن ساختار بسیار مفید است و آزادی بیشتری برای نوشتن یک پکیج خوب به شما می‌دهد.

پس به طور کلی، فلت بودن ساختار برای پکیج‌ها می‌تواند بهتر از داشتن یک ساختار پیچیده باشد.



☄️ @GoInsights | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
2
پوشش تست (Test Coverage) یک معیار است که نشان می‌دهد چه مقدار از کد شما توسط تست‌های واحد (Unit Tests) بررسی می‌شود. این معیار به شما می‌گوید که چه درصدی از کد شما هنگام اجرای تست‌ها اجرا شده است.

به زبان ساده:

- پوشش تست بالا به این معنی است که بخش زیادی از کد شما تست شده و این احتمال بروز باگ‌ها را کاهش می‌دهد.
- پوشش تست پایین به این معنی است که فقط بخش کوچکی از کد تست شده و این باعث افزایش خطر وجود باگ‌های کشف‌نشده می‌شود.

با این حال، ۱۰۰٪ پوشش تست همیشه به این معنی نیست که کد شما بدون مشکل است، اما نشانه خوبی است که بیشتر بخش‌های کد شما بررسی شده‌اند.

آستانه مناسب بودن پوشش تست معمولاً به شرایط و پروژه بستگی دارد.

اما به‌طور کلی ۷۰٪ تا ۸۰٪: اغلب به عنوان یک آستانه مناسب در نظر گرفته می‌شود. در این سطح، بخش بزرگی از کد شما تست شده است و احتمال وجود باگ‌های پنهان کاهش می‌یابد.

بالای ۸۰٪: این سطح پوشش معمولاً برای پروژه‌هایی با اهمیت بالا و کدهای حساس توصیه می‌شود. با این حال، رسیدن به ۱۰۰٪ پوشش همیشه ضروری نیست و در برخی موارد حتی ممکن است عملی نباشد.به خاطر داشته باشید که کیفیت تست‌ها نیز مهم است. حتی اگر پوشش تست بالا باشد، اگر تست‌ها به‌درستی طراحی نشده باشند، ممکن است همچنان باگ‌های مهمی در کد وجود داشته باشد.

نحوه تست پوشش در گولنگ:

go test ./... -cover


☄️ @GoInsights | @GolangEngineers
New unique package

The standard library of Go 1.23 now includes the new unique package. The purpose behind this package is to enable the canonicalization of comparable values. In other words, this package lets you deduplicate values so that they point to a single, canonical, unique copy, while efficiently managing the canonical copies under the hood. You might be familiar with this concept already, called “interning”. Let’s dive in to see how it works, and why it’s useful.

https://go.dev/blog/unique


☄️ @GoInsights | @GolangEngineers
3
🎊 Go 1.23.1 and 1.22.7 are released!

🔐 Security: Includes security fixes for encoding/gob, go/build/constraint, and go/parser

🔈 Announcement: https://groups.google.com/g/golang-announce/c/K-cEzDeCtpc

📦 Download: go.dev/dl/#go1.23.1


@GoInsights | @GolangEngineers
4