Gopher Academy
3.34K subscribers
920 photos
40 videos
280 files
2.02K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
YARR: Yet Another RSS Reader

🟢 خلاصه مقاله:
یک گردآورنده‌ی فید به نام YARR است که به‌عنوان یک RSS Reader، به‌روزرسانی‌های چندین وب‌سایت را در یک محیط واحد جمع می‌کند. هسته‌ی سرویس با زبان Go نوشته شده تا سمت سرور سریع و کارآمد باشد و رابط کاربری با Vue.js ساخته شده تا تجربه‌ای واکنش‌گرا و روان ارائه دهد. تفکیکِ روشن بین بک‌اند و فرانت‌اند، نگه‌داری و گسترش را ساده می‌کند و YARR را به گزینه‌ای مناسب برای دنبال‌کردن متمرکز خبرها و مطالب از منابع مختلف تبدیل می‌سازد.

🟣لینک مقاله:
https://golangweekly.com/link/173349/web


👑 @gopher_academy
1
🔵 عنوان مقاله
Announcing GoReleaser v2.12

🟢 خلاصه مقاله:
گو ریلیزر نسخه ۲.۱۲ منتشر شد؛ ابزاری برای خودکارسازی انتشار پروژه‌های Go. این نسخه یکپارچه‌سازی جدید با Docker، گواهی‌گذاری (attestation) تصاویر Docker، پشتیبانی از بسته‌بندی Makeself برای ساخت بسته‌های خوداستخراج/اجرایی، سازگاری با Go 1.25 و بهبودهای دیگر را ارائه می‌کند.

🟣لینک مقاله:
https://golangweekly.com/link/173634/web


👑 @gopher_academy
1🤝1
Forwarded from Software Engineer Labdon
کد ۴۸ ساله معروف بیل گیتس، اوپن‌سورس شد!
مایکروسافت کد ۴۸ ساله‌ی معروف بیل گیتس را متن‌باز کرد تا هر کسی بتواند آن را ببیند و استفاده کند.

https://github.com/microsoft/BASIC-M6502

| <Saber V/>
💋3🎉1
🔵 عنوان مقاله
Go 1.25 Released

🟢 خلاصه مقاله:
انتشار Go 1.25 همزمان با تعطیلات نویسنده بود و باعث شد پوشش فوری آن ممکن نشود. بااین‌حال این نسخه، مطابق روال نسخه‌های جزئی گو، بهبودهای تدریجی در پایداری، کارایی و تجربه توسعه‌دهنده ارائه می‌دهد. توصیه می‌شود یادداشت‌های انتشار بررسی شود، نسخه جدید در محیط آزمایشی امتحان گردد و ارتقا به‌صورت کنترل‌شده انجام شود. به‌زودی مرور دقیق‌تری از نکات برجسته و تغییرات ظریف یا موارد از رده‌خارج ارائه خواهد شد. از تلاش‌های تیم و مشارکت‌کنندگان گو نیز قدردانی می‌شود.

🟣لینک مقاله:
https://golangweekly.com/link/173113/web


👑 @gopher_academy
1
Forwarded from DevOps Labdon
🔵 عنوان مقاله
Getting Started with Falco Security Tool on GKE

🟢 خلاصه مقاله:
این آموزش نحوه راه‌اندازی و پیکربندی Falco روی GKE را برای امنیت زمان اجرا نشان می‌دهد: نصب عامل‌های Falco در خوشه، آزمایش قوانین پیش‌فرض با شبیه‌سازی رفتارهای مشکوک، اتصال رویدادها به Google Cloud Monitoring برای ساخت هشدارهای قابل اقدام، و افزودن قوانین سفارشی برای متناسب‌سازی تشخیص‌ها با نیازهای کلاستر. نتیجه، یک لایه تشخیص زمان اجرا روی GKE با هشداردهی یکپارچه و قابلیت تنظیم برای کاهش خطاهای مثبت کاذب است.

🟣لینک مقاله:
https://ku.bz/zFRVy94dl


👑 @DevOps_Labdon
1
🔵 عنوان مقاله
The Deeper Love of Go.

🟢 خلاصه مقاله:
این یادداشت در Golang Weekly توضیح می‌دهد چرا علاقه به Go با گذشت زمان عمیق‌تر می‌شود: سادگی زبانی، کتابخانه استاندارد کارآمد، ابزارهای یکپارچه و مدل هم‌زمانی عملی که طراحی شفاف را تشویق می‌کند. نتیجه این ترکیب، ساخت و استقرار قابل پیش‌بینی، کد خوانا و تیم‌هایی است که سریع‌تر و مطمئن‌تر کار می‌کنند. در عین پذیرش محدودیت‌ها—مثل رسیدگی صریح به خطا و پرهیز آگاهانه از ویژگی‌های پیچیده—مقاله نشان می‌دهد همین قیود به نگهداشت‌پذیری و پایداری بلندمدت کمک می‌کنند. در نهایت، با وجود بهبودهای سنجیده در بخش‌هایی مانند جنریک‌ها و ابزارها، ارزش‌های اصلی Go یعنی سادگی، وضوح و قابلیت اتکا محور باقی می‌مانند.

🟣لینک مقاله:
https://golangweekly.com/link/173647/web


👑 @gopher_academy
2
🆗 کتاب The Anatomy of Go
توضیحات این کتاب👇

👑 @gopher_academy
🍾2
Gopher Academy
🆗 کتاب The Anatomy of Go توضیحات این کتاب👇 👑 @gopher_academy
🆗 معرفی کتاب «The Anatomy of Go»

درک عمیق از Go: این کتاب به‌طور جامع به بررسی درون‌مایه‌های زبان Go می‌پردازد؛ از نوع‌ها یا مدیریت حافظه گرفته تا concurrency و تبدیل کد به اسمبلی.

حالت Early Access: هم‌اکنون بخش قابل توجهی از کتاب (فصل‌های ۱ تا ۶) در دسترس است و بقیه فصول به‌مرور منتشر می‌شوند. با خرید، علاوه بر دسترسی فعلی، به‌روزرسانی‌های آینده نیز بدون هزینه می‌رسانی می‌شود.

قیمت ویژه: نسخه Early Access با ۲۰ دلار قابل تهیه است و پس از انتشار کامل کتاب، قیمت به ۳۵ دلار افزایش خواهد یافت. خرید در این مرحله علاوه بر قیمت پایین‌تر، امکان دریافت updates را نیز فراهم می‌کند.


فهرست فصول اولیه (در دسترس)

Go Thinks Simple Works Better

فلسفه طراحی Go، نحوه اجرای کد، تصمیمات طراحی

Basic Data Types, Variables, and Constants

نوع‌های داده‌ای، اشاره‌گرها، متغیرها، کانستنت‌ها، و مواردی مثل unsafe pointers

Arrays, Slices, Strings and Maps

ساختار و رفتار داخلی آرایه‌ها، اسلایس، رشته‌ها و مپ‌ها

Structs, Generics & Interfaces

ساختمان structها، جنریک‌ها، اینترفیس‌ها و عملکرد در زمان اجرا

How Does Go Code Turn into Assembly?

روند واقعی کامپایل: از AST تا SSA، بهینه‌سازی، inlining، و تولید اسمبلی

Functionality

نحوه عملکرد defer، panic/recover، حذف کد‌های مرده، inlining و devirtualization


🆗پیش‌بینی فصول آینده

فصولی که در راه هستند عبارتند از:

فصل ۷: Memory

نحوه مدیریت حافظه: stack، heap، escape analysis، garbage collection

فصل ۸: Concurrency

مدل همزمانی Go: کانال‌ها، Select، Goroutine lifecycle، Scheduler، شبکه و I/O

🆗درباره نویسنده

Phuong Le (func25):

نویسنده، فعال جامعه Go و مهندس فنی در VictoriaMetrics — شرکتی با محصولات مبتنی بر Go مثل VM و VictoriaLogs.

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

🥳 https://www.bytesizego.com/books/anatomy-of-go

👑 @gopher_academy
🍾4
کتاب Foundations of Debugging for Golang (Book)
👇👇👇👇

👑 @gopher_academy
1
Gopher Academy
کتاب Foundations of Debugging for Golang (Book) 👇👇👇👇 👑 @gopher_academy
این کتاب برای توسعه‌دهندگان Junior و Mid، طراحی شده تا مهارت‌های عیب‌یابی در توسعه Go را از پایه تا سطح پیشرفته ارتقاء دهد.
---
معرفی کتاب

کتاب Foundations of Debugging for Golang**، نوشته‌ی **Matt Boyle**، با هدف آموزش مهارت‌های حیاتی در زمینه‌ی **دیباگ‌کردن در محیط‌های محلی و تولید منتشر شده است. توسط ByteSizeGo به قیمت ۳۵ دلار عرضه شده و شامل آپدیت‌های مادام‌العمر برای خریداران اولیه است ([bytesizego.com][1]).
---
فصل‌هایی که خواهید آموخت:

چه چیزهایی یاد می‌گیرید؟

* تقویت قدرت تشخیص خطاها تنها با مشاهده و تحلیل کد
* ساخت استراتژی لاگ‌گذاری سازمانی برای اپلیکیشن‌های Go
* تعریف و استفاده از Metrics و ایجاد داشبوردهای نظارتی
* پیاده‌سازی و استفاده از Distributed Tracing در معماری میکروسرویس
* استفاده از ابزارهای پروفایلینگ Go (مثل pprof) برای بررسی عملکرد و بهینه‌سازی اپ‌ها ([bytesizego.com][1])
---
درباره نویسنده و اعتبار کتاب
* نویسنده: **Matt Boyle**، مهندس ارشد با تجربه‌ی عملی در سیستم‌های توزیع‌شده و استفاده‌ی حرفه‌ای از Go.
* کتاب به سبک تجربی و کاربردی نوشته شده و بازخوردهای مثبتی از جامعه دریافت کرده:

«Topics like debugging-by-eye, logging, tracing, profiling... written in a clear style with minimal sample code»
1
Forwarded from Gopher Job
Companies using Go.xlsx
12.1 KB
📂 یه فایل فوق‌العاده آماده کردیم براتون!

🔹 لیست ۶۴ شرکت بزرگ دنیا که از Golang استفاده می‌کنن
🔹 همراه با موقعیت‌های شغلی فعال Golang توی همین شرکت‌ها

اگه دنبال فرصت‌های شغلی توی حوزه Backend، DevOps یا Software Engineering هستی، این فایل می‌تونه یه نقطه شروع عالی باشه.

📌 همین الان فایل رو بردار و شرکت‌ها + موقعیت‌ها رو ببین

@gopher_job
1🤝1
🔵 عنوان مقاله
semantic versioning filter

🟢 خلاصه مقاله:
یک فیلتر مبتنی بر نسخه‌بندی معنایی اضافه شده است که امکان اجرای اسپک‌ها بر اساس محدودیت‌های نسخه را فراهم می‌کند. با تعریف قیودی مانند >=1.2.0 یا <2.0.0 می‌توانید تست‌های مرتبط با بازه‌های سازگاری خاص را اجرا یا نادیده بگیرید. این کار برای پشتیبانی از چند نسخه، کاهش نویز در CI و حفظ سازگاری بسیار مفید است و اجازه می‌دهد یک مجموعه تست واحد، رفتار نسخه‌های مختلف را به‌صورت دقیق و قابل اتکا پوشش دهد.

🟣لینک مقاله:
https://golangweekly.com/link/173098/web


👑 @gopher_academy
🔵 عنوان مقاله
Watermill 1.5: Library for Building Event-Driven Apps

🟢 خلاصه مقاله:
خلاصه‌ای از Watermill 1.5: این کتابخانه برای ساخت برنامه‌های رویدادمحور طراحی شده و کار با جریان‌های پیام را در کانال‌های متنوعی مانند Kafka، RabbitMQ، HTTP و حتی binlogهای MySQL تسهیل می‌کند. با فراهم‌کردن یک لایه یکپارچه برای انتشار و مصرف پیام‌ها، به اتصال سرویس‌ها، یکپارچه‌سازی با زیرساخت موجود و ساخت معماری‌های ماژولار و مقیاس‌پذیر کمک می‌کند. این پروژه متن‌باز است و مخزن آن در GitHub در دسترس است.

🟣لینک مقاله:
https://golangweekly.com/link/173343/web


👑 @gopher_academy
2
🔵 عنوان مقاله
Surf: An Advanced HTTP Client Library

🟢 خلاصه مقاله:
**Surf یک کتابخانه پیشرفته برای کلاینت HTTP است که با تمرکز بر اسکرپینگ وب و خودکارسازی API طراحی شده. این ابزار با شبیه‌سازی رفتار مرورگرهای دسکتاپ و توجه به جزئیات اثرگذار بر انگشت‌نگاری، تعامل پایدارتر با وب‌سایت‌ها را ممکن می‌کند، در کنار مدیریت کوکی و سشن، ریدایرکت‌ها و مذاکره محتوا. همچنین با پشتیبانی از HTTP/3 و قابلیت‌هایی مانند تلاش مجدد هوشمند، کنترل همزمانی، pooling اتصال و پشتیبانی از پروکسی، برای جمع‌آوری داده، تست و یکپارچه‌سازی API با کارایی و شباهت بالا به ترافیک واقعی مرورگر مناسب است.

🟣لینک مقاله:
https://golangweekly.com/link/173635/web


👑 @gopher_academy
2
📌 نصب، آپدیت و پاک‌کردن Golang

🟦 در سیستم عامل Windows

🔹روش نصب:
دانلود از [go.dev/dl](https://go.dev/dl) → نصب فایل MSI → چک با go version

🔹روش آپدیت:
نسخه جدید MSI رو نصب کن (قدیمی جایگزین میشه).

🔹روش حذف کامل:
Control Panel → Uninstall → پاک‌کردن پوشه‌های C:\Go و C:\Users\<User>\go

---

🍏 در سیستم عامل macOS

🔹روش نصب:

* با Homebrew: brew install go
* یا دانلود .pkg از [go.dev/dl](https://go.dev/dl)

🔹روش آپدیت:

* با Brew: brew upgrade go
* با pkg: دوباره نصب کن.

🔹روش حذف کامل:

* با Brew: brew uninstall go
* دستی: sudo rm -rf /usr/local/go ~/go

---

🟩 در سیستم عامل Linux

🔹روش نصب:

*در Debian/Ubuntu:


  sudo apt install golang-go

* یا tarball رسمی:


  wget https://go.dev/dl/go1.xx.x.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.xx.x.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin


🔹روش آپدیت:

* apt: sudo apt upgrade golang-go
* snap: sudo snap refresh go
* tarball: دوباره نصب کن.

🔹روش حذف کامل:

sudo rm -rf /usr/local/go ~/go
sudo apt remove golang-go
sudo snap remove go


---

نکته: مسیر کاری Go پیش‌فرض ~/go هست. برای آخرین نسخه‌ها همیشه از [go.dev/dl](https://go.dev/dl) استفاده کن.

👑 @gopher_academy
3
🔵 عنوان مقاله
Testing Time (and Other Asynchronicities)

🟢 خلاصه مقاله:
**خلاصه فارسی: وبلاگ رسمی Go در ادامه معرفی قابلیت‌های جدید زبان، به بسته testing/synctest پرداخته که در Go 1.25 به مرحله پایدار (GA) رسیده است. این بسته با فراهم‌کردن امکان کنترل و شبیه‌سازی زمان و هماهنگی در تست‌ها، نوشتن تست‌های قابل‌اعتماد برای کدهای همزمان و وابسته به زمان را آسان‌تر می‌کند و خطاهای تصادفی را کاهش می‌دهد. پست با مثال‌ها و الگوهای عملی نشان می‌دهد چگونه synctest را در کنار testing به‌کار بگیریم و نکات ادغام و مهاجرت را بیان می‌کند؛ ارتقای آن به GA نیز به معنی پایداری API و آماده‌بودن برای استفاده گسترده است.

🟣لینک مقاله:
https://golangweekly.com/link/173622/web


👑 @gopher_academy
2
Forwarded from AI Labdon
🤖 علاقه‌مند به دنیای هوش مصنوعی هستی؟

🏖 دنبال می‌کنی که چطور AI داره دنیا رو متحول می‌کنه؟

🍻پس جای درستی اومدی!

🎯 در کانال ما هر روز:

🔍 جدیدترین اخبار و دستاوردهای دنیای AI

🧠 تحلیل‌ تخصصی در حوزه یادگیری ماشین، دیپ لرنینگ و مدل‌های زبانی

💼 بررسی کاربردهای هوش مصنوعی در پزشکی، صنعت، آموزش، امنیت و اقتصاد

🛠 معرفی ابزارها، دوره‌ها و منابع یادگیری

📈 بررسی ترندها و آینده‌ فناوری‌های مرتبط با هوش مصنوعی

🍄همه‌ی این‌ها به زبان ساده، خلاصه و قابل فهم برای همه علاقه‌مندان — از مبتدی تا حرفه‌ای!
👇👇👇👇👇👇

https://t.iss.one/ai_labdon
🎉1
🔵 عنوان مقاله
Container-Aware GOMAXPROCS

🟢 خلاصه مقاله:
** بلاگ رسمی Go سری تازه‌ای را درباره ویژگی‌های Go 1.25 آغاز کرده و در نخستین بخش، به رفتار آگاه از کانتینر در GOMAXPROCS می‌پردازد. مقدار پیش‌فرض این تنظیم روی سخت‌افزار واقعی منطقی است، اما در کانتینرها می‌تواند به‌دلیل محدودیت‌های CPU (مانند cgroup و quota) مشکل ایجاد کند. در Go 1.25 تشخیص و تنظیم پیش‌فرض بهبود یافته تا با محدودیت‌های کانتینر سازگارتر شود، عملکرد پیش‌بینی‌پذیرتری بدهد و تنها در برخی موارد نیاز به تنظیم دستی باقی بماند.

🟣لینک مقاله:
https://golangweekly.com/link/173329/web


👑 @gopher_academy
🔥1
🔵 عنوان مقاله
How Go Schedules Millions of Goroutines: A Deep Dive into GMP

🟢 خلاصه مقاله:
این مطلب با نگاهی عمیق و قابل‌فهم توضیح می‌دهد که زمان‌بند Go چگونه با مدل GMP (گورو‌تین‌ها، رشته‌های سیستم‌عامل، و پردازنده‌های منطقی) میلیون‌ها گورو‌تین را روی تعداد کمی نخ اجرا می‌کند. سازوکار صف‌های اجرا، «کار‌ربایی» بین پردازنده‌ها، نحوهٔ ایجاد و توقف گورو‌تین‌ها، مدیریت بلاک‌شدن روی I/O یا syscall، پیش‌امپشن برای عدالت و کاهش تأخیر، و تعامل زمان‌بند با جمع‌آوری زباله بررسی می‌شود. همچنین نکات عملی مانند تنظیم GOMAXPROCS، پرهیز از انفجار گورو‌تین‌ها، مدیریت فشار کانال‌ها، و استفاده از ابزارهای ردیابی و pprof برای عیب‌یابی مطرح شده است. در کنار آن، دو راهنمای کاربردی معرفی می‌شود: ساخت تصویر کانتینر از کد Go با Depot API (تأکید بر بیلد سریع، کش و ادغام در CI) و استقرار یک سایت استاتیک Hugo روی Hetzнер (از آماده‌سازی تا TLS و تحویل پایدار). این مجموعه پلی بین تئوری زمان‌بندی و استقرار عملی ایجاد می‌کند.

🟣لینک مقاله:
https://golangweekly.com/link/173629/web


👑 @gopher_academy
1
Forwarded from Software Engineer Labdon
دلیل اینکه در زبان‌هایی مثل Go یا Rust یا حتی C دچار سردرگمی میشید، بخاطر این هست که میخواهید ساختارهایی که از زبان‌های شی‌گرا در ذهن دارید رو دقیقا به همون شکل در این‌ها هم داشته باشید. این زبان‌ها هم تا حدی این توهم رو ایجاد میکنند که اینکار شدنی هست؛ و میتوان گفت که همینطور است، ولی فقط در ظاهر!

بسیاری از چیزهایی که شما در زبان‌های شی‌گرا با آن‌ها اشنا شدید، مختص و منحصر به شی‌گرایی نیستند. صرفا چون شما احتمالا به دلایل تاریخی برنامه‌نویسی رو با شی‌گرایی یاد گرفتید، ممکن هست اینطور تصور کنید که این مفاهیم فقط مختص به شی گرایی هستند. در حالی که بیشتر مفاهیمی که در ذهن دارید در هر پارادایم و هر زبانی قابل پیاده سازی هست.

مثلا اگر امروز به یک برنامه‌نویس Go یا Rust یک پروژه‌ی بانکی یا یک سیستم فروشگاه رو محول کنید، به احتمال زیاد این پروژه رو مبتنی بر DDD انجام خواهد داد! حتی یک برنامه‌نویس Clojure هم احتمالا همین رویه را دنبال خواهد کرد! الان احتمالا در ذهن شما این سوال پیش آمده که DDD؟ چطور همچین چیزی ممکن هست؟ مگه این برای شی گرایی نیست؟ خیر، «شما» اون رو با شی گرایی یاد گرفتید، ولی خودش یک ایده‌ی عمومی است.

شما به شکلی آموزش دیده‌اید که یونیت‌های کد را در قالب کلاس ها ببینید. و وقتی به زبان‌هایی میرسید که دارای کلاس نیستند، اولین چیزی که به فکرتان میرسد این است که کلاس را در آن‌ها شبیه سازی کنید. درست است؟

این دیدگاه، شما را دچار مشکل میکند، و دلیل اصلی اش این است که شما حتی در زبان‌های شی‌گرا هم به درستی درک نکرده بودید که کلاس چیست! و همان دیدگاه اشتباه خود درباره کلاس رو به سایر زبان‌ها هم انتقال میدهید!

وقتی حرف از کلاس میشود، بیشتر افراد میکنند کلاس یک بلاک از کد است که تعدادی فیلد و متد را بین دو {} گرد هم آورده است.

اما کسی سوال نمیکند خب چرا اینکار را کردند؟ فقط چون میخواستند یک سری فیلد داشته باشند و یک سری تابع بتوانند روی ان‌ها کار کنند؟

خب این رو که از قدیم در همه زبان‌ها داشتیم. مگر اصلا جور دیگری میشود برنامه نویسی کرد؟ در تمام زبان‌ها یک سری دیتا داریم و یک سری تابع که روی آن دیتا کار میکنند. قدیمی ترین کد C ای که میتوانید پیدا کنید را باز کنید، احتمالا در آن یک استراکت پیدا میکنید به همراه تعدادی تابع که روی آن استراکت کار میکنند. این رویه قبل از شی گرایی هم وجود داشته... فقط چون این دو را کنار هم درون {} قرار میدهید اسمش میشود کلاس؟ یعنی فقط چون میخواستند کنار هم باشن؟ که تنها نباشن؟ غصه نخورن؟ فکر نمیکنید شاید دلایل مهمتری برای این موضوع وجود داشته؟

ویژگی‌هایی وجود دارد که باعث میشود کلاس، کلاس بشود:

۱. کلاس دارای مکانیزم وراثت است.
۲. کلاس پلی مورفیسم مبتنی بر وراثت را فراهم میکند (متدهای virtual)
۳. از روی کلاس، میتوان آبجکتی در حافظه تولید کرد.
۴. کلاس آبجکت‌ها را دسته بندی میکند (برای همین اسمش class است). یعنی باید بتوان جواب این سوال را جویا شد: ایا فلان آبجکت جزو فلان کلاس است؟
۵. آبجکت‌های ساخته شده از روی کلاس، دارای لایف تایم متفاوتی از سایر بلاک ها هستند. ابجکت‌ها حالت رفرنس دارند. به این معنی که تقریبا در تمام زبان‌ها، در هیپ قرار میگیرند.

اینکه دیتا و توابع را کنار هم و در یک بلاک به اسم کلاس جمع کردن‌اند، به خاطر این است که یک کانتکست یکپارچه پدید آورند که در قالب آن بتوانند همه‌ی ویژگی‌های بالا را برآورده کنند.

اینکه شما یک استراکت بسازید، و چند تابع تعریف کنید که روی آن استراکت کار کنند، کدام یک از ویژگی‌های بالا را شامل میشود؟ این دو بخش لزومی هم ندارد که جدا از هم باشند. مثلا در zig میتوانید توابع را عین یک کلاس درون همان بلاک مربوط به استراکت قرار دهید. ولی باز هم در صورت انجام اینکار، تبدیل به کلاس نمیشود چون هیچکدام از ویژگی‌های بالا را ندارد.

یا مثلا در C یا سایر زبان‌ها، فیلد‌ها و متدها را در ماژول‌ها گرد هم میاورند. ایا با اینکار آن ماژول تبدیل به کلاس شده است؟

اتفاقی که این وسط افتاده این است:
۱. شما در حین یادگیری شی گرایی بدرستی درک نکردید که کلاس چیست!
۲. بر مبنای آن درک اشتباه، فکر کردید شی گرایی یعنی کنار هم قرار دادن فیلدها و متدها در یک بلاک.
۳. اصرار به این دارید که این درک اشتباه را در زبان‌هایی که اصلا دارای کلاس نیستند پیاده سازی کنید.

این همان جایی است که در زبان‌هایی مانند Go و Rust و Zig  و C سایرین به مشکل بر میخورید. برای همین هست که میگویند این‌ها را با زبان‌های شی گرا اشتباه نگیرید. چون این‌ها از نظر ظاهری، شاید شرایطی را فراهم کنند که به چشم شما مشابه چیزی باشد که در شی گرایی به یاد داشتید، ولی از نظر Semantics با زبان‌های شی گرا متفاوت اند.

| <Amirreza Gh/>
👍6💯22