خب خب Go چیه و چرا؟
گو (Go)، یا همون Golang که لوگوش از حیوان gopher الهام گرفته شده، یه زبان برنامهنویسی مدرنه که گوگل سال 2009 معرفی کرد.
چرا Go ساخته شد؟ 🤔
تو پروژههای بزرگ، زبانهایی مثل C++ و Java، با وجود قدرت زیاد، به دلیل پیچیدگی زیاد و سرعت پایین توسعه، دردسرساز بودن. Go این مشکلات رو با ترکیب سادگی و سرعت حل کرد:
1⃣ سینتکس ساده:
2⃣ عملکرد بالا:
3⃣ مدیریت حافظه خودکار:
4⃣ ابزارهای مدرن:
5⃣ مناسب برای پروژههایی با مقیاس بالا:
ویژگیهای مهم Go 🧩
1⃣ سادگی
2⃣ مدیریت همزمانی به بهترین شکل
ـBackend
ـDevOps
ـCloud
ـDistribution systems
ـBlockchain
و...
نمونه کد Go 💻
یه مثال از ارسال درخواست HTTP همزمان با استفاده از Goroutines
گو (Go)، یا همون Golang که لوگوش از حیوان gopher الهام گرفته شده، یه زبان برنامهنویسی مدرنه که گوگل سال 2009 معرفی کرد.
چرا Go ساخته شد؟ 🤔
تو پروژههای بزرگ، زبانهایی مثل C++ و Java، با وجود قدرت زیاد، به دلیل پیچیدگی زیاد و سرعت پایین توسعه، دردسرساز بودن. Go این مشکلات رو با ترکیب سادگی و سرعت حل کرد:
1⃣ سینتکس ساده:
کدها راحتتر نوشته و خونده میشن.
2⃣ عملکرد بالا:
ـ Go مثل C مستقیماً به کد ماشین کامپایل میشه، برای همین سریع اجرا میشه.
3⃣ مدیریت حافظه خودکار:
با استفاده از Garbage Collection، مدیریت حافظه ساده و بدون دخالت مستقیم برنامهنویس انجام میشه.
4⃣ ابزارهای مدرن:
مدیریت همزمانی، تست، و مدیریت حافظه به شکل مدرنی طراحی شده.
5⃣ مناسب برای پروژههایی با مقیاس بالا:
ـGo در ابتدا برای تسهیل توسعه پروژههای بزرگ و زیرساختی گوگل طراحی شد.
ویژگیهای مهم Go 🧩
1⃣ سادگی
ـGo از همون اول برای ساده بودن طراحی شد. توش خبری از ارثبری پیچیده یا کلی مفهوم سنگین نیست. این یعنی یادگیری و استفاده ازش راحتتره ( البته نه خیلی ساده 😅).
2⃣ مدیریت همزمانی به بهترین شکل
ـGo با Goroutines، اجرای همزمان رو خیلی سبک و سریع کرده. این Goroutines نسبت به Threadها خیلییی کمهزینهتر هستن و فقط چند کیلوبایت حافظه مصرف میکنن. مثلا میتونی صدها کار همزمان انجام بدی بدون اینکه سرور زیر بار بره.3⃣ کتابخانه های قدرت مند
کتابخونه استاندارد Go بیشتر چیزایی که برای ساختن یه برنامه نیاز داری رو داره، از کار با شبکه گرفته تا رمزنگاری و فایل. این کتابخونهها به شکل بهینه طراحی شدن تا بدون نیاز به ابزارهای خارجی، بسیاری از نیازهای شما رو برطرف کنن.4⃣ ـCross-Platform بودن
کد Go رو یه بار کامپایل میکنی و روی سیستمعاملهای مختلف میتونی اجراش کنی. این قابلیت به خاطر تولید فایل باینری مستقل فراهم شده که نیازی به runtime مثل JVM یا Python Interpreter نداره.5⃣ سازگاری با معماری Microservices
ـGo به خاطر سبک و سریع بودنش، برای ساخت Microservices عالیه. سرویسهای کوچیک و مستقلی که Go مدیریتشون رو خیلی راحت کرده.6⃣ مدیریت Dependencyها با Go Modules
ـGo ابزار Go Modules رو داره که مدیریت وابستگیها رو ساده و مدرن کرده. این ابزار امکان تعریف ورژن ها و مدیریت کتابخانهها رو خیلی راحتتر از روشهای سنتی میکنه.کجاها از Go استفاده میشه؟
ـBackend
ـDevOps
ـCloud
ـDistribution systems
ـBlockchain
و...
نمونه کد Go 💻
یه مثال از ارسال درخواست HTTP همزمان با استفاده از Goroutines
:
package main
import (
"fmt"
"net/http"
)
func fetch(url string) {
resp, err := http.Get(url)
if err != nil {
fmt.Println(url, "Error:", err)
return
}
defer resp.Body.Close()
fmt.Println(url, resp.Status)
}
func main() {
urls := []string{"https://example.com", "https://google.com", "https://golang.org"}
for _, url := range urls {
go fetch(url)
}
fmt.Scanln() // برای جلوگیری از بسته شدن برنامه
#go #برنامه_نویسی
🔆 CHANNEL | GROUP
👍8❤4
خب خب خب پکیج fmt در go
این پکیج (fmt) یکی از پراستفادهترین و مهمترین ابزارهای Go هست که برای کار با ورودی و خروجیها استفاده میشه. بیاین ببینیم چطور کار میکنه.
توابع پرکاربرد fmt 🛠️
پکیج fmt یه سری توابع داره که هر کدوم برای هدف خاصی طراحی شدن. مهمترینشون رو اینجا لیست کردم:
1⃣ Print و Println
برای چاپ اطلاعات روی کنسول:
Output:
2⃣ Printf
برای چاپ با فرمت خاص:
Output:
3⃣ Sprintf
مثل Printf عمل میکنه، ولی خروجی رو به جای چاپ، به صورت رشته برمیگردونه:
Output:
4⃣ Fprintf
اطلاعات رو به جای کنسول، به فایل یا هر io.Writer دیگهای میفرسته:
5⃣ Scan و Scanf
برای گرفتن ورودی از کاربر:
Output (Example input: "Ali", "20"):
پشت پرده fmt: چطور کار میکنه؟ 🧐
حالا که با توابع آشنا شدی، بد نیست بدونی fmt پشت صحنه چطور دادهها رو مدیریت میکنه.
1⃣ استفاده از Interfaces
ـfmt از دو اینترفیس مهم استفاده میکنه:
ـStringer:
مثال:
Output:
2⃣ـ Reflection
پکیج fmt از پکیج reflect استفاده میکنه تا نوع دادهها رو در زمان اجرا بررسی کنه. یعنی وقتی %v یا سایر placeholders رو استفاده میکنی، fmt میتونه بفهمه چه نوع دادهای داری و چطور باید چاپش کنه.
Output:
فرمتدهی دادهها با fmt 🎨
پکیج fmt قابلیتهای فرمتدهی خیلی خوبی داره که بیشتر اوقات به کار میان:
اعداد
Output:
رشتهها
Output:
منطق (Boolean)
Output:
جمعبندی ✍
پکیج fmt یکی از ابزارهای قدرتمند Go هست که با توابع ساده و قابلیتهای فرمتدهی پیشرفته، کار برنامهنویسا رو راحت کرده.
➖➖➖➖➖➖➖➖➖
این پکیج (fmt) یکی از پراستفادهترین و مهمترین ابزارهای Go هست که برای کار با ورودی و خروجیها استفاده میشه. بیاین ببینیم چطور کار میکنه.
توابع پرکاربرد fmt 🛠️
پکیج fmt یه سری توابع داره که هر کدوم برای هدف خاصی طراحی شدن. مهمترینشون رو اینجا لیست کردم:
1⃣ Print و Println
برای چاپ اطلاعات روی کنسول:
ـPrint: متنها رو بدون فاصله چاپ میکنه.
ـPrintln: بین متنها فاصله میذاره و یه خط جدید اضافه میکنه.
fmt.Print("Hello") fmt.Print("World") fmt.Println("Hello") fmt.Println("World")
Output:
HelloWorld
Hello
World
2⃣ Printf
برای چاپ با فرمت خاص:
name := "Ali"
age := 20 fmt.Printf(
"Name: %s,
Age: %d\n",
name, age
)
Output:
Name: Ali, Age: 20
3⃣ Sprintf
مثل Printf عمل میکنه، ولی خروجی رو به جای چاپ، به صورت رشته برمیگردونه:
name := "Ali"
greeting := fmt.Sprintf(
"Hello,
%s!",
name
)
fmt.Println(greeting)
Output:
Hello, Ali!
4⃣ Fprintf
اطلاعات رو به جای کنسول، به فایل یا هر io.Writer دیگهای میفرسته:
file, _ := os.Create("output.txt")
fmt.Fprintf(file, "Hello, %s!", "File")
5⃣ Scan و Scanf
برای گرفتن ورودی از کاربر:
ـScan: ورودی ساده رو میخونه.
ـScanf: ورودی رو با فرمت مشخص میخونه.
var name string
fmt.Println("Enter your name:")
fmt.Scanln(&name)
fmt.Println("Your name is:", name)
var age int
fmt.Println("Enter your age:")
fmt.Scanf("%d", &age)
fmt.Println("Your age is:", age)
Output (Example input: "Ali", "20"):
Enter your name:
Your name is: Ali
Enter your age:
Your age is: 20
پشت پرده fmt: چطور کار میکنه؟ 🧐
حالا که با توابع آشنا شدی، بد نیست بدونی fmt پشت صحنه چطور دادهها رو مدیریت میکنه.
1⃣ استفاده از Interfaces
ـfmt از دو اینترفیس مهم استفاده میکنه:
ـStringer:
اگه struct این اینترفیس رو پیادهسازی کرده باشه، متد String() برای چاپ خروجی فراخوانی میشه.ـError:
برای ارورها، متد Error() فراخوانی میشه.
مثال:
type Person struct {
Name string
Age int
}
func (p Person) String() string {
return fmt.Sprintf("Name: %s, Age: %d", p.Name, p.Age)
}
func main() {
person := Person{"Ali", 20}
fmt.Println(person)
}
Output:
Name: Ali, Age: 20
2⃣ـ Reflection
پکیج fmt از پکیج reflect استفاده میکنه تا نوع دادهها رو در زمان اجرا بررسی کنه. یعنی وقتی %v یا سایر placeholders رو استفاده میکنی، fmt میتونه بفهمه چه نوع دادهای داری و چطور باید چاپش کنه.
x := 42
fmt.Printf("Type: %T, Value: %v\n", x, x)
Output:
Type: int, Value: 42
فرمتدهی دادهها با fmt 🎨
پکیج fmt قابلیتهای فرمتدهی خیلی خوبی داره که بیشتر اوقات به کار میان:
اعداد
%d: عدد صحیح
%f: عدد اعشاری
%.2f: عدد اعشاری با 2 رقم اعشار
%b: نمایش در مبنای 2
%x: نمایش در مبنای 16
num := 42
pi := 3.14159
fmt.Printf("Decimal: %d, Binary: %b, Hex: %x, Pi: %.2f\n", num, num, num, pi)
Output:
Decimal: 42, Binary: 101010, Hex: 2a, Pi: 3.14
رشتهها
%s: نمایش رشته
%q: رشته با کوتیشن
%+v: struct با نام فیلدها
%v: مقدار خام
type Person struct {
Name string
Age int
}
p := Person{"Ali", 20}
fmt.Printf("Raw: %v, With Fields: %+v\n", p, p)
Output:
Raw: {Ali 20}, With Fields: {Name:Ali Age:20}
منطق (Boolean)
%t: مقدار True یا False رو چاپ میکنه.
isGoAwesome := true
fmt.Printf("Is Go awesome? %t\n", isGoAwesome)
Output:
Is Go awesome? true
جمعبندی ✍
پکیج fmt یکی از ابزارهای قدرتمند Go هست که با توابع ساده و قابلیتهای فرمتدهی پیشرفته، کار برنامهنویسا رو راحت کرده.
#programming #go
➖➖➖➖➖➖➖➖➖
🔆 CHANNEL | GROUP
👍15👎9❤1
تا حالا کلی مطالب خفن و کاربردی تو کانال NinjaLearn براتون آماده کردیم و الان صدها مطلب مختلف و جذاب داریم.
این شما و این لیست دستهبندیهای کانال🔻:
هر کدوم از این هشتگها برای یه موضوع خاص طراحی شده تا شما به راحتی بتونید محتوای مورد نظرتون رو پیدا کنید. دیگه لازم نیست کلی تو کانال بگردید 😊
راستی میتونید بنر کانال رو برای دوستاتون هم بفرستید تا اونا هم به جمع ما بپیوندن و از این مطالب مفید استفاده کنن 😉
➖➖➖➖➖➖➖➖➖
از اونجایی که مطالب کانال خیلی متنوع و زیاد شده، تصمیم گرفتیم یه دستهبندی مرتب و منظم برای همهی پستها داشته باشیم تا شما عزیزان راحتتر بتونید محتوای مورد نظرتون رو پیدا کنید
این شما و این لیست دستهبندیهای کانال🔻:
🦫 #go: آموزشها و نکات کاربردی زبان گو
💻 #programming: مطالب برنامه نویسی
🐍 #python: ترفندها و نکات پایتونی
🦄 #django: مطالب فریمورک جنگو
⚡️ #fastapi: مطالب فریم ورک فست
🌐 #web: مطالب مرتبط به وب
📡 #network: مطالب مرتبط به شبکه
🗂️ #db: معرفی و نکات دیتابیس
🔖 #reference: معرفی مقاله و ویدیو
📢 #notif: اطلاع رسانی ها
❓ #question: سوالات جالب در برنامه نویسی
🎊 #event: رویداد هایی که معرفی کردیم
🎬 #movie: معرفی فیلم و سریال
📚 #book: معرفی کتابهای تخصصی
🤖 #AI: مطالب مرتبط به هوش مصنوعی
📊 #ml: مطالب مرتبط به یادگیری ماشین
🛠️ #backend: آموزشها و ترفندهای بکاند
🔒 #security: نکات امنیتی
⚙ #devops: مطالب مرتبط به دواپس
📺 #YouTube: ویدیوهای چنل یوتیوب ما
هر کدوم از این هشتگها برای یه موضوع خاص طراحی شده تا شما به راحتی بتونید محتوای مورد نظرتون رو پیدا کنید. دیگه لازم نیست کلی تو کانال بگردید 😊
اگه موضوع جدیدی به مطالب کانال اضافه بشه، حتماً تو این لیست قرار میگیره ✅
راستی میتونید بنر کانال رو برای دوستاتون هم بفرستید تا اونا هم به جمع ما بپیوندن و از این مطالب مفید استفاده کنن 😉
NinjaLearn Banner 🥷🤝
#category
➖➖➖➖➖➖➖➖➖
🔆 CHANNEL | GROUP
❤22👍1👎1🔥1
Ninja Learn | نینجا لرن
تا حالا کلی مطالب خفن و کاربردی تو کانال NinjaLearn براتون آماده کردیم و الان صدها مطلب مختلف و جذاب داریم. از اونجایی که مطالب کانال خیلی متنوع و زیاد شده، تصمیم گرفتیم یه دستهبندی مرتب و منظم برای همهی پستها داشته باشیم تا شما عزیزان راحتتر بتونید محتوای…
دوستانیم که تازه تشریف اوردید کانال (خیلی خوش اومدید ❤️)
حتما این دسته بندی کانال رو مطالعه کنید که از مطالب قبلی کانال استفاده ببرید 😉
حتما این دسته بندی کانال رو مطالعه کنید که از مطالب قبلی کانال استفاده ببرید 😉
Telegram
Ninja Learn | نینجا لرن
تا حالا کلی مطالب خفن و کاربردی تو کانال NinjaLearn براتون آماده کردیم و الان صدها مطلب مختلف و جذاب داریم.
از اونجایی که مطالب کانال خیلی متنوع و زیاد شده، تصمیم گرفتیم یه دستهبندی مرتب و منظم برای همهی پستها داشته باشیم تا شما عزیزان راحتتر بتونید…
از اونجایی که مطالب کانال خیلی متنوع و زیاد شده، تصمیم گرفتیم یه دستهبندی مرتب و منظم برای همهی پستها داشته باشیم تا شما عزیزان راحتتر بتونید…
❤8