کداکسپلور | CodeExplore
7.88K subscribers
1.91K photos
282 videos
103 files
1.63K links
با کد اکسپلور یاد بگیر، لذت ببر و بروز باش ⚡️😉

سایت کد‌اکسپلور:
CodeExplore.ir
👨🏻‍💻 ارتباط با ما :
@CodeExploreSup
گروه :
@CodeExplore_Gap
تبلیغات در کد اکسپلور :
@CodeExploreAds
Download Telegram
کداکسپلور | CodeExplore
🚀 ۳ ابزار کاربردی برای کار با API و JSON 🔸 ‏Postman ابزاری قدرتمند برای تست و مدیریت APIهای REST و GraphQL با محیط گرافیکی حرفه‌ای. پشتیبانی از انواع متد، مدیریت Token و ساخت کالکشن تست. 🔗 postman.com 🔸 ‏Insomnia جایگزینی سبک، سریع و ساده برای Postman…
🚀 تفاوت Anonymous Struct و Named Struct در Go + کاربرد واقعی در ساخت API

در زبان Go، دو نوع ساختار (struct) پرکاربرد داریم که بسته به نیاز، استفاده از یکی نسبت به دیگری بهتره. اینجا با یه مثال واقعی از دنیای API برات توضیح می‌دیم که چرا و کجا از هر کدوم استفاده کنیم:

🔸 ساختار نام‌دار (Named Struct)
ساختاری با اسم مشخص که می‌تونه چندین‌بار در بخش‌های مختلف پروژه استفاده بشه. برای مدل‌سازی دیتاهایی مثل کاربر، محصول یا درخواست لاگین خیلی مفیده.

مزایا:
• قابل استفاده مجدد
• خوانایی بالا
• سازماندهی بهتر کد

type LoginRequest struct {
Username string `json:"username"`
Password string `json:"password"`
}

func LoginHandler(c *gin.Context) {
var req LoginRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(400, gin.H{"error": "invalid request"})
return
}
// استفاده از req.Username و req.Password
}

🔸 ساختار بی‌نام (Anonymous Struct)
وقتی فقط یک‌بار قراره از یه ساختار ساده استفاده کنی و نمی‌خوای struct جداگانه تعریف کنی، این روش خیلی سریع و کارآمده. مخصوصاً توی پارس کردن سریع کوئری‌ها یا تست‌های سبک.

مزایا:
• کد سریع‌تر و تمیزتر
• بدون نیاز به تعریف نوع جدا
• مناسب برای موارد موقتی یا کوچک
func SearchHandler(c *gin.Context) {
var query struct {
Q string form:"q"
Page int form:"page"
}

if err := c.ShouldBindQuery(&query); err != nil {
c.JSON(400, gin.H{"error": "bad query"})
return
}

// استفاده از query.Q و query.Page
}
🎯 جمع‌بندی:
اگر ساختار رو در چند جای پروژه استفاده می‌کنی ➡️ ساختار نام‌دار (Named Struct)
اگر فقط برای یک‌بار یا در یک فانکشن خاص استفاده داری ➡️ ساختار بی‌نام (Anonymous Struct)

#GoLang #Struct #Gin #API #Backend #برنامه‌نویسی #گو
☕️Telegram | Website | Discord
❤‍🔥6🔥3💔2
🚀توضیح Closure Function در Go — ابزار قدرتمند برای نگه‌داری وضعیت (State)
در زبان Go، توابع می‌تونن داخل خودشون توابع دیگه تعریف و برگردونن. اگر اون تابع داخلی به متغیرهای خارج از خودش دسترسی داشته باشه، بهش می‌گیم Closure.

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

مثال واقعی: شمارنده با Closure
func counter() func() int {
count := 0
return func() int {
count++
return count
}
}

func main() {
c := counter()
fmt.Println(c()) // 1
fmt.Println(c()) // 2
fmt.Println(c()) // 3
}


📌 هر بار که تابع ()c اجرا می‌شه، مقدار count رو یکی زیاد می‌کنه، چون اون تابع داخلی به count دسترسی داره و وضعیتش رو حفظ کرده.

🎯 کاربردهای واقعی Closure در Go:
نگه‌داری وضعیت بدون استفاده از struct
تولید توابع سفارشی‌شده با داده‌ی خاص
ساختن توابع داینامیک مثل Middleware، Filter و Validator
پیاده‌سازی رفتارهای فانکشنال (مثل map، reduce، chain)

🧠 چرا مهمه؟
Closureها بهت این امکان رو می‌دن که کد تمیزتر، ماژولارتر و با قابلیت ترکیب‌پذیری بالا بنویسی — بدون نیاز به تعریف نوع یا ساختارهای پیچیده.


#GoLang #Struct #Gin #API #Backend #برنامه‌نویسی #گو
☕️Telegram | Website | Discord
❤‍🔥5💔31🔥1