5 فریمورک کاربردی زبان Go 💡
اگر برنامهنویس Go هستین، حتما این پست رو بخونید چون ممکنه توی پروژه بعدیتون از یکی از فریمورکهای زیر استفاده کردید 👇
+|برای مطالعه کلیک کنید|+
#introduction #framework #go
☕️ @CodeExplore
اگر برنامهنویس Go هستین، حتما این پست رو بخونید چون ممکنه توی پروژه بعدیتون از یکی از فریمورکهای زیر استفاده کردید 👇
+|برای مطالعه کلیک کنید|+
#introduction #framework #go
☕️ @CodeExplore
❤9
فریمورک برای فعالیت های مرتبط با رباتیک و اینترنت اشیاء با استفاده از زبان GO برای علاقه مندان به این زمینه🔥
🌐 لینک سایت | 🌐 لینک گیت هاب
#go #robotic #IOT
☕️ @CodeExplore
#go #robotic #IOT
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11❤🔥4🔥3
منبعی کاربردی برای آموزش زبان برنامه نویسی Go با مثال های ساده و متنوع در حوزه های مختلف
🔗 https://gobyexample.com
🌪 https://github.com/mmcgrana/gobyexample
#go #example #tutorial
☕️ @CodeExplore
#go #example #tutorial
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11🔥3❤🔥1
بهترین IDEهای کمتر شناختهشده و کاربردی برای برنامهنویسان 👀
❗️ در دنیای برنامهنویسی، ابزارهای زیادی برای توسعه نرمافزار وجود دارند که هر کدام ویژگیها و قابلیتهای خاص خودشان را دارند. اکثر برنامهنویسان با IDE (integrated development environment) های معروفی مثل Visual Studio ، IntelliJ IDEA یا PyCharm آشنا هستند، اما در کنار اینها...
🌕 برای مشاهده کامل مقاله کلیک کنید.
#ide #go #php #python #c #cpp #programming
☕️ @CodeExplore
#ide #go #php #python #c #cpp #programming
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥14⚡10🔥8
سایت boot dev ، یادگیری با شروع کد نویسی 🔥
🔸️ سایت Boot.dev یه پلتفرم آموزش آنلاینه که با تمرکز روی کدنویسی عملی و بازیوار، بهت کمک میکنه از همون اول با نوشتن کد، برنامهنویسی رو تو مغزت حک کنی! بیشتر از 100 هزار نفر تا حالا از دورههاش استفاده کردن.
🔹️ دوره هاش شامل Python، JavaScript، Go، ساخت API، دیتابیس و مفاهیم پایهای علوم کامپیوتره، اونم بدون ویدیوهای طولانی و خستهکننده — فقط تمرینهای مرحلهبهمرحله و بازخورد فوری! اگه دنبال یادگیری واقعیای، Boot.dev یه گزینه جدیه.
#bootdev #site #python #go #golang #programming
☕️Telegram | Website | Discord
🔸️ سایت Boot.dev یه پلتفرم آموزش آنلاینه که با تمرکز روی کدنویسی عملی و بازیوار، بهت کمک میکنه از همون اول با نوشتن کد، برنامهنویسی رو تو مغزت حک کنی! بیشتر از 100 هزار نفر تا حالا از دورههاش استفاده کردن.
🔹️ دوره هاش شامل Python، JavaScript، Go، ساخت API، دیتابیس و مفاهیم پایهای علوم کامپیوتره، اونم بدون ویدیوهای طولانی و خستهکننده — فقط تمرینهای مرحلهبهمرحله و بازخورد فوری! اگه دنبال یادگیری واقعیای، Boot.dev یه گزینه جدیه.
#bootdev #site #python #go #golang #programming
☕️Telegram | Website | Discord
❤🔥10🔥3💔3
معرفی Tablewriter چاپ جدول قشنگ توی CLI 🚀
اگه با Go کار میکنی و میخوای خروجی ترمینالت مرتب و حرفهای باشه، Tablewriter دقیقاً همونه! باهاش میتونی جدولهای ASCII/Unicode/Markdown/HTML بسازی، سطر و ستونهات رو تراز کنی و حتی استایل شخصی بدی.
نصب
نمونه سریع
📌 خروجی:
ابزاری ساده ولی حرفهای برای اینکه جدولهای CLI جذاب بسازی ✨
#go #cli
☕️Telegram | Website | Discord
اگه با Go کار میکنی و میخوای خروجی ترمینالت مرتب و حرفهای باشه، Tablewriter دقیقاً همونه! باهاش میتونی جدولهای ASCII/Unicode/Markdown/HTML بسازی، سطر و ستونهات رو تراز کنی و حتی استایل شخصی بدی.
نصب
go get github.com/olekukonko/tablewriter@latest
نمونه سریع
data := [][]any{
{"Alice", "25 yrs", "New York"},
{"Bob", "30 yrs", "Boston"},
}
table := tablewriter.NewTable(os.Stdout)
table.Header("Name", "Age", "City")
table.Bulk(data)
_ = table.Render()
📌 خروجی:
┌───────┬────────┬──────────┐
│ NAME │ AGE │ CITY │
├───────┼────────┼──────────┤
│ Alice │ 25 yrs │ New York │
│ Bob │ 30 yrs │ Boston │
└───────┴────────┴──────────┘
ابزاری ساده ولی حرفهای برای اینکه جدولهای CLI جذاب بسازی ✨
#go #cli
☕️Telegram | Website | Discord
❤🔥5😁3😍2🔥1
فهم Third Index در Subslice های Go
در Go وقتی از اسلایس یک subslice میگیریم، معمولاً دو نوع سینتکس داریم:
1️⃣ حالت اول: slice[low:high]
طول (len) = high - low
ظرفیت (cap) = cap(slice) - low
مثال:
نکته: تا زمانی که len به cap نرسه، گو دست به زحمت برای ایجاد یک اسلایس جدید نمیکنه. اما وقتی بگذره همه عناصرو برمیداره و دوباره یه جای مموری میبره که جا برای عناصر جدید باشه.
همچنین این رو هم باید بدونیم y بخشی از x هست. یعنی اگه y سهم [1:3] از اسلایس x رو داشته باشه، تغییرات روی y روی x هم میشینه. یا بهتر بگم Reference داره.
اما شاید بخواییم از این رفتار جلوگیری کنیم. حالا چطور؟
2️⃣ با slice[low:high:max]
طول (len) = high - low
ظرفیت (cap) = max - low
مثال:
حالا y ظرفیت محدودتری دارد.
اگر append از این ظرفیت فراتر بره حتماً یک آرایه مستقل ایجاد میشه. ولی باز هم اگه قبل مستقل شدنش تغییری روی subslice بدید روی slice هم میشینه. ولی اگه len به cap برسه با خیال راحت میتونید دیگه تغییرات بدید. چون دیگه تحت سلطه x نیست🤣.
💡 نکته: به طور خلاصه استفاده از third index یه راه ساده برای جلوگیری از تغییر ناخواسته والد هنگام append هست.
برای اینکه مطمئن از این رفتار بشید، این دو کد رو به دقت بررسی کنید.
https://go.dev/play/p/E5kILltOzrb
https://go.dev/play/p/UaIsqsxQkku
توی لینک دوم از third index برای جلوگیری از تغییر ناخواسته استفاده میکنیم.
منبع: کتاب Learning Go
#go #third_index
☕️ Telegram | Website | Discord
در Go وقتی از اسلایس یک subslice میگیریم، معمولاً دو نوع سینتکس داریم:
slice[low : high]
slice[low : high : max]
1️⃣ حالت اول: slice[low:high]
طول (len) = high - low
ظرفیت (cap) = cap(slice) - low
مثال:
x := []int{1, 2, 3, 4, 5}
y := x[1:3] // 2 3
fmt.Println(len(y), cap(y)) // 2, 4
نکته: تا زمانی که len به cap نرسه، گو دست به زحمت برای ایجاد یک اسلایس جدید نمیکنه. اما وقتی بگذره همه عناصرو برمیداره و دوباره یه جای مموری میبره که جا برای عناصر جدید باشه.
همچنین این رو هم باید بدونیم y بخشی از x هست. یعنی اگه y سهم [1:3] از اسلایس x رو داشته باشه، تغییرات روی y روی x هم میشینه. یا بهتر بگم Reference داره.
اما شاید بخواییم از این رفتار جلوگیری کنیم. حالا چطور؟
2️⃣ با slice[low:high:max]
طول (len) = high - low
ظرفیت (cap) = max - low
مثال:
x := []int{1, 2, 3, 4, 5}
y := x[1:3:3] // عناصر دوم و سوم، حداکثر ظرفیت = 3-1 = 2
fmt.Println(len(y), cap(y)) // 2, 2
حالا y ظرفیت محدودتری دارد.
اگر append از این ظرفیت فراتر بره حتماً یک آرایه مستقل ایجاد میشه. ولی باز هم اگه قبل مستقل شدنش تغییری روی subslice بدید روی slice هم میشینه. ولی اگه len به cap برسه با خیال راحت میتونید دیگه تغییرات بدید. چون دیگه تحت سلطه x نیست🤣.
x := []int{1, 2, 3, 4, 5}
y1 := x[:2] // len=2, cap=5
y2 := x[:2:2] // len=2, cap=2
y1 = append(y1, 6) // هنوز به آرایه اصلی x وصل است، x تغییر میکند
y2 = append(y2, 6) // از cap فراتر رفت → y2 مستقل شد، x تغییری نمیکند
💡 نکته: به طور خلاصه استفاده از third index یه راه ساده برای جلوگیری از تغییر ناخواسته والد هنگام append هست.
برای اینکه مطمئن از این رفتار بشید، این دو کد رو به دقت بررسی کنید.
https://go.dev/play/p/E5kILltOzrb
https://go.dev/play/p/UaIsqsxQkku
توی لینک دوم از third index برای جلوگیری از تغییر ناخواسته استفاده میکنیم.
منبع: کتاب Learning Go
#go #third_index
☕️ Telegram | Website | Discord
❤🔥4⚡1😍1
مدیریت حافظه توی Go ⏳
شاید براتون جالب باشه بدونید که هر برنامهٔ کامپیوتری معمولاً حافظهشو تو سه بخش اصلی نگه میداره:
حافظهٔ سراسری (Global): برای متغیرهایی که کل مدت اجرای برنامه هستن.
پشته (Stack): برای متغیرهای محلی و موقتی؛ سریع و خودکار تخصیص و آزاد میشه.
هیپ (Heap): برای دادههایی که عمر طولانیتری دارن یا بین بخشهای مختلف برنامه به اشتراک گذاشته میشن؛ مدیریتشون کمی سختتره.
زبان Go برای اینکه برنامهها سبکتر و سریعتر باشن، تا جایی که میتونه دادهها رو تو پشته نگه میداره. اینکه یه داده تو پشته بمونه یا بره هیپ، رو بخشی از کامپایلر به اسم تحلیل فرار (Escape Analysis) تصمیم میگیره. این تحلیل نگاه میکنه اگه یه متغیر بعد از تموم شدن تابع هم باید زنده بمونه، میفرستدش هیپ.
تو زبانهایی مثل C و ++C، آزاد نکردن حافظه، دوبار آزاد کردن یا اشارهگرهای معلق میتونه دردسر بزرگی بشه. Go با داشتن جمعآوریکنندهٔ زباله (Garbage Collector) این دردسرا رو از دوش برنامهنویس برداشته. GCش بر پایهٔ الگوریتم Mark & Sweep کار میکنه و خودکار حافظهٔ بلااستفاده رو آزاد میکنه.
به زبون ساده:
1️⃣ توقف کوتاهمدت برنامه (Stop-The-World): وقتی GC شروع میشه، اجرای goroutineها برای مدت کوتاهی متوقف میشه تا وضعیت حافظه ثبت بشه.
2️⃣ علامتگذاری (Mark): اشیایی که هنوز در حال استفادهان علامت میخورن.
3️⃣ پاکسازی (Sweep): حافظهٔ اشیای غیرقابلدسترس آزاد میشه.
یه نکتهٔ جالب دیگه اینه که کد نهایی Go شامل runtime خودش هم هست؛ یعنی وقتی یه برنامهٔ Go رو کامپایل میکنید، علاوه بر کد شما، اجزای زماناجرای Go مثل همین GC، مدیریت پشته، زمانبندی goroutineها و فراخوانیهای سیستمی هم داخل فایل باینری قرار میگیرن. این باعث میشه خیلی از قابلیتهای مدیریت حافظه بهصورت خودکار تو برنامه حاضر باشه.
پس GC همواره رشد هیپ رو زیر نظر داره و هر وقت لازم باشه، چرخهٔ جدیدی راه میندازه تا حافظهٔ غیرقابلاستفاده آزاد بشه. نتیجهٔ این طراحی اینه که تو Go میتونید با خیال راحتتر برنامهنویسی کنید و کمتر نگران آزاد کردن دستی حافظه باشید.
#go #memory #managment
☕️ Telegram | Website | Discord
شاید براتون جالب باشه بدونید که هر برنامهٔ کامپیوتری معمولاً حافظهشو تو سه بخش اصلی نگه میداره:
حافظهٔ سراسری (Global): برای متغیرهایی که کل مدت اجرای برنامه هستن.
پشته (Stack): برای متغیرهای محلی و موقتی؛ سریع و خودکار تخصیص و آزاد میشه.
هیپ (Heap): برای دادههایی که عمر طولانیتری دارن یا بین بخشهای مختلف برنامه به اشتراک گذاشته میشن؛ مدیریتشون کمی سختتره.
زبان Go برای اینکه برنامهها سبکتر و سریعتر باشن، تا جایی که میتونه دادهها رو تو پشته نگه میداره. اینکه یه داده تو پشته بمونه یا بره هیپ، رو بخشی از کامپایلر به اسم تحلیل فرار (Escape Analysis) تصمیم میگیره. این تحلیل نگاه میکنه اگه یه متغیر بعد از تموم شدن تابع هم باید زنده بمونه، میفرستدش هیپ.
تو زبانهایی مثل C و ++C، آزاد نکردن حافظه، دوبار آزاد کردن یا اشارهگرهای معلق میتونه دردسر بزرگی بشه. Go با داشتن جمعآوریکنندهٔ زباله (Garbage Collector) این دردسرا رو از دوش برنامهنویس برداشته. GCش بر پایهٔ الگوریتم Mark & Sweep کار میکنه و خودکار حافظهٔ بلااستفاده رو آزاد میکنه.
به زبون ساده:
1️⃣ توقف کوتاهمدت برنامه (Stop-The-World): وقتی GC شروع میشه، اجرای goroutineها برای مدت کوتاهی متوقف میشه تا وضعیت حافظه ثبت بشه.
2️⃣ علامتگذاری (Mark): اشیایی که هنوز در حال استفادهان علامت میخورن.
3️⃣ پاکسازی (Sweep): حافظهٔ اشیای غیرقابلدسترس آزاد میشه.
یه نکتهٔ جالب دیگه اینه که کد نهایی Go شامل runtime خودش هم هست؛ یعنی وقتی یه برنامهٔ Go رو کامپایل میکنید، علاوه بر کد شما، اجزای زماناجرای Go مثل همین GC، مدیریت پشته، زمانبندی goroutineها و فراخوانیهای سیستمی هم داخل فایل باینری قرار میگیرن. این باعث میشه خیلی از قابلیتهای مدیریت حافظه بهصورت خودکار تو برنامه حاضر باشه.
پس GC همواره رشد هیپ رو زیر نظر داره و هر وقت لازم باشه، چرخهٔ جدیدی راه میندازه تا حافظهٔ غیرقابلاستفاده آزاد بشه. نتیجهٔ این طراحی اینه که تو Go میتونید با خیال راحتتر برنامهنویسی کنید و کمتر نگران آزاد کردن دستی حافظه باشید.
#go #memory #managment
☕️ Telegram | Website | Discord
🔥5❤🔥2😍2