Gopher Academy
3.33K subscribers
923 photos
40 videos
280 files
2.08K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
Go With The Domain - DevTwitter.pdf
21.1 MB
#Go

Go With The Domain
Building Modern Business Software in Go

- By Robert Laszczak and Milosz Smolka
- 221 Pages


🕊 @gopher_academy
🍾4🔥2💊1
۵۰ نکته برای کسانی که قصد یادگیری زبان برنامه‌نویسی Go را دارند.

#golang #go #tip #tips

https://golang50shad.es


🕊 @gopher_academy | @GolangEngineers
👍6🔥21🍾1
for loop in golang in idiomatic way

func main() {
i := 0
for ok := true; ok; ok = (i != 10) {
fmt.Print(i*i, " ")
i++
}
}

» output: 0 1 4 9 16 25 36 49 64 81
#go_idiom

🕊 @gopher_academy | @GolangEngineers
👍3
package main

import "fmt"

func main() {
var values = []string{"1", "2", "3", "4", "5"}
for _, value := range values[1:] {
fmt.Println(value)
}
}

ایجاد و استفاده از حلقه for range در زبان گولنگ و همچنین محدود کردن slice مورد نظر آن به کمک اندیس ها

#go_idiom

🕊 @gopher_academy | @GolangEngineers
🍾5👍31
🟢Unintended variable shadowing (#1)

🔵Avoiding shadowed variables can help prevent mistakes like referencing the wrong variable or confusing readers.

#tip #go

👑 @gopher_academy
👍3🎉2
🔵 عنوان مقاله
GitHub's Dependabot now supports

🟢 خلاصه مقاله:
** GitHub قابلیت جدیدی به Dependabot اضافه کرده تا اکنون بتواند Go modules را از private registries نیز به‌صورت خودکار به‌روزرسانی کند. این تغییر برای تیم‌هایی که ترکیبی از پکیج‌های عمومی و داخلی دارند مهم است، چون دیگر مدیریت نسخه‌های داخلی دستی یا با ابزارهای سفارشی انجام نمی‌شود و کل گراف وابستگی‌ها پوشش داده می‌شود. با پیکربندی dependabot.yml و افزودن اطلاعات دسترسی به رجیستری خصوصی، Dependabot می‌تواند برای به‌روزرسانی‌ها Pull Request بسازد و انتشار وصله‌های امنیتی را به کدهای وابسته تسهیل کند. Blake Gentry جزئیات پیکربندی، نمونه‌ها و نکات رفع اشکال را نیز توضیح می‌دهد.

#Dependabot #GitHub #Go #Golang #PrivateRegistry #DependencyManagement #SoftwareSupplyChain #Security

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


👑 @gopher_academy
🔵 عنوان مقاله
graphics.gd: Use Go with the Godot Game Engine

🟢 خلاصه مقاله:
اGodot یک موتور محبوب برای ساخت بازی‌های 2D و 3D است و با وجود شباهت نام، ربطی به Go ندارد. پروژه graphics.gd پلی میان این دو می‌زند: یک لایه runtime و ابزار فراهم می‌کند تا بتوانید منطق بازی و اپ را با Go بنویسید و هم‌زمان از امکانات و گردش‌کار Godot بهره ببرید. این رویکرد، ویژگی‌های کراس‌پلتفرم Godot را حفظ می‌کند و اکنون حتی امکان ساخت اپ‌های iOS با Go را نیز فراهم کرده است. نتیجه، مسیری عملی برای توسعه‌دهندگان Go و کاربران Godot است که می‌خواهند کدنویسی را با Go انجام دهند بی‌آن‌که از مزیت‌های خود Godot چشم‌پوشی کنند.

#Go #Godot #Golang #GameDev #iOS #Bindings #CrossPlatform #OpenSource

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


👑 @gopher_academy
🔥1
🔵 عنوان مقاله
Using Go Channels to Solve Interface Impedance Mismatch

🟢 خلاصه مقاله:
استفاده از Go Channels برای رفع ناسازگاری بین رابط‌ها
این یادداشت نشان می‌دهد که چگونه می‌توان از Go Channels نه برای همزمانی، بلکه به‌عنوان یک لایه تطبیق سبک استفاده کرد. Zach Musgrave توضیح می‌دهد که در مواجهه با “interface impedance mismatch”—جایی که یک API داده را به‌صورت push می‌دهد و دیگری آن را به‌صورت pull مصرف می‌کند، یا یکی جریان‌محور است و دیگری تکرارشونده—یک Channel می‌تواند به‌عنوان بافری خنثی، این دو جهان را بدون تغییرات اساسی در کد به هم متصل کند. در این الگو، تولیدکننده در همان جریان اجرای عادی داده‌ها را داخل Channel می‌گذارد و مصرف‌کننده با الگوی خواندن رایج از روی Channel آن‌ها را برمی‌دارد؛ نیازی به goroutine یا معماری همزمانی پیچیده نیست. مزیت‌ها شامل جداسازی بهتر، ساده‌سازی تبدیل بین رابط‌ها، و تست‌پذیری بالاتر است؛ با این احتیاط‌ها که اندازه بافر معقول انتخاب شود و استفاده غیرهمزمانی از Channel به‌وضوح مستند گردد. پیام اصلی: Channels فقط برای همزمانی نیستند؛ آن‌ها یک واسط ترکیبی مفید برای آشتی دادن APIها—به‌ویژه در تبدیل push/pull و جریان/تکرار—هستند.

#Go #Golang #Channels #APIDesign #InterfaceImpedanceMismatch #SoftwareEngineering #DesignPatterns #GoTips

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


👑 @gopher_academy
🔵 عنوان مقاله
GopherCon 2025 Go Contributor Summit Notes

🟢 خلاصه مقاله:
در GopherCon 2025 جمع زیادی از مشارکت‌کنندگان Go گرد هم آمدند و درباره مدیریت وابستگی‌ها، روند بررسی و پذیرش پیشنهادهای زبانی، کارایی و الگوهای بهینه در cgo، امنیت و پیاده‌سازی WebAuthn، وضعیت فازینگ و پوشش تست، و هدف‌گیری WebAssembly (و حتی به‌صورت گذرا JVM) گفتگو کردند. محورهای اصلی شامل بهبود reproducible builds و امنیت در اکوسیستم ماژول‌ها، شفاف‌تر و کارآمدتر شدن فرآیند پروپوزال‌ها با درس‌آموخته‌های generics و حفظ سازگاری عقب‌رو، کاهش سربار مرز Go/C در cgo، بلوغ فازینگ و پوشش در CI، و چالش‌های Wasm/WASI مانند اندازه باینری، زمان راه‌اندازی و async بود. هرچند یادداشت‌ها خام‌اند، اما جهت‌گیری‌ها، اولویت‌ها و سوالات باز را روشن می‌کنند و انتظار می‌رود با مسائل پیگیری، اسناد طراحی و دعوت به بازخورد از سوی جامعه ادامه یابد.

#Go #GopherCon #cgo #WebAuthn #WebAssembly #Fuzzing #DependencyManagement #OpenSource

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


👑 @gopher_academy
🔵 عنوان مقاله
How to Implement the Outbox Pattern in Go and Postgres

🟢 خلاصه مقاله:
** این مقاله توضیح می‌دهد چگونه با الگوی Outbox در کنار Go و Postgres، مشکل دو‌نوشتن را حل کنیم و ارسال رویدادها را قابل‌اعتماد کنیم. ایده اصلی این است که در یک تراکنش واحد، هم تغییرات دامنه و هم رکورد مربوط به رویداد در جدول outbox ذخیره شود تا یا هر دو باهم انجام شوند یا هیچ‌کدام. سپس یک پردازشگر پس‌زمینه رکوردهای معوق را با SELECT … FOR UPDATE SKIP LOCKED برداشته، آن‌ها را به سامانه‌ای مثل Kafka یا RabbitMQ یا یک وب‌هوک ارسال می‌کند و وضعیت‌شان را به processed تغییر می‌دهد.

نکات کلیدی پیاده‌سازی شامل: طراحی جدول outbox با فیلدهایی مانند type، payload (معمولاً JSON)، status، retry_count و زمان‌ها؛ پوشش هر دو عملیات (نوشتن دامنه و درج outbox) در یک تراکنش؛ پیاده‌سازی worker در Go برای برداشت دسته‌ای، ارسال، ثبت موفقیت/خطا و بازآزمایی با backoff؛ تکیه بر تحویل حداقل-یک‌بار همراه با مصرف‌کننده‌های idempotent برای مدیریت تکرار؛ و پایش شاخص‌هایی مثل تأخیر برداشت و نرخ شکست. برای بهینگی عملیاتی، پاکسازی دوره‌ای رکوردهای پردازش‌شده، ایندکس‌گذاری مناسب، رسیدگی به پیام‌های مشکل‌دار (dead-letter) و حفظ ترتیب رویدادها در سطح aggregate ضروری است. ترکیب polling با LISTEN/NOTIFY در Postgres می‌تواند زمان واکنش را بهتر کند. نتیجه، راهکاری ساده و مقیاس‌پذیر است که بدون تراکنش‌های توزیع‌شده، قابلیت اتکا را در معماری رویدادمحور فراهم می‌کند.

#OutboxPattern #Go #Postgres #Microservices #EventDriven #TransactionalOutbox #Messaging #Reliability

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


👑 @gopher_academy
2