با این پرایمر در زبان Go به سرعت برسید.
Go یکی از زبان های برنامه نویسی مدرن است که در بسیاری از نظرسنجی ها به عنوان زبان ترجیحی توسعه دهندگان مورد توجه قرار گرفته است. Go دارای یک نحو ساده برای استفاده و درک در حالی که عملکرد سطح بالایی را ارائه می دهد.
میتوانید از Go برای ساخت برنامههای مختلف، از برنامههای وب گرفته تا برنامههای خط فرمان، سرویسهای ابری و شبکه استفاده کنید. اکوسیستم بسته های شخص ثالث Go از بسیاری موارد استفاده دیگر پشتیبانی می کند.
Go دارای اکثر ویژگی هایی است که در یک زبان مدرن انتظار دارید: ژنریک، همزمانی، استنتاج نوع، جمع آوری زباله و بسیاری موارد دیگر.
شروع با Go
می توانید Go را روی اکثر سیستم عامل ها اجرا کنید. به صفحه نصب بروید و نسخه Go ترجیحی را برای سیستم عامل خود دانلود کنید.
پس از دانلود و نصب Go، می توانید شروع به نوشتن و اجرای کد Go در فایل هایی با پسوند فایل .go کنید.
متوجه خواهید شد که Go بیشتر ویژگی ها و بسیاری از عملکردهای زبان های برنامه نویسی دیگر را دارد. اگر تجربه برنامه نویسی قبلی دارید، باید Go straightforward را پیدا کنید.
متغیرها در Go
Go در سطح بنیادی کاملاً گویا است. دو روش برای تعریف متغیرها در Go وجود دارد. می توانید از کلمه کلیدی var برای اعلام متغیرهای انواع مختلف داده استفاده کنید. پس از تعیین شناسه، باید نوع داده متغیر را تنظیم کنید.
var a string
var b int
var c any
var age string = "five years old"
var age = 5// equivalent to var age int = 5
fmt.Println(age)
اگر از نوع داده متغیر مطمئن نیستید، می توانید از هر کدام به عنوان نوع داده استفاده کنید.
شما همچنین می توانید با کلمه کلیدی const ثابت ها را به روشی مشابه با اعلان متغیرها اعلام کنید.
const age = "five years old"
تغییر دادن ثابت ها پس از اعلام آنها غیرممکن است.
Go یک راه جایگزین برای اعلام متغیرها در توابع ارائه می دهد. به استفاده از دو نقطه قبل از علامت مساوی توجه کنید:
funcmain() {
age := "five years old"// equivalent to var age = "five years old"
}
شرایط در Go
Go نیز برای تصمیم گیری در برنامه ها شرط دارد. می توانید از دستور if و else در کد خود برای مدیریت تصمیمات استفاده کنید.
در اینجا یک مثال اگر بیان شده است که دو عدد صحیح را برای برابری مقایسه می کند:
var a int = 12
if a == 12 {
fmt.Println("a equals twelve")
}
شما فقط می توانید بعد از تعیین یک دستور if از دستورات else استفاده کنید و بعد از بسته شدن بلوک if باید بلوک else را مشخص کنید:
var a int = 12
if a == 12 {
fmt.Println("a equals twelve")
} else {
fmt.Println("a does not equal twelve")
}
بلوک else فقط زمانی اجرا می شود که دستور if به نادرست ارزیابی شود. Go عبارات else-if را ارائه نمی دهد، اما می توانید از دستورهای switch برای دستورات شرطی پیچیده استفاده کنید.
در اینجا آناتومی دستور سوئیچ در Go آمده است.
age := 7
switch age {
case1:
fmt.Println("one")
case2:
fmt.Println("two")
case3:
fmt.Println("three")
default:
fmt.Println("zero")
}
می توانید با کلیدواژه switch دستورات سوئیچ ایجاد کنید و پس از آن می توانید موارد مختلف را با کلمه کلیدی case مشخص کنید. شما می توانید با استفاده از یک کلمه کلیدی پیش فرض، حالت پیش فرض را مدیریت کنید.
برای Loops in Go
Go حلقههای for-loop را برای کارهای تکراری فراهم میکند، و برخلاف اکثر زبانها، حلقه while یا do-while در Go وجود ندارد.
شما می توانید از حلقه for-loop محبوب C-style یا محدوده for-loop که ساختارهای داده خاصی پشتیبانی می کنند استفاده کنید.
در اینجا مثالی از استفاده از حلقه C-style برای یک برنامه Go آورده شده است:
funcprinter() {
for i := 0; i <= 3; i++ {
fmt.Println(i)
}
}
میتوانید از حلقه برای حلقه داخلی Go در ساختارهای داده ترکیبی مانند برشها، نقشهها و آرایهها استفاده کنید. تابع range هنگام عبور از ساختار داده، شاخص و عنصر ایندکس را برمی گرداند.
for index, value := range dataStructure {
}
آرایه ها در Go
آرایه ها یکی از انواع داده های مرکب در Go هستند. آرایه های Go مشابه آرایه های سبک C هستند و طول مشخصی در اعلان و نمونه سازی دارند.
در اینجا چگونه می توانید آرایه ها را در Go اعلام کنید:
var arr [5]string
arr := [7]int{0, 1, 2, 3, 4, 5, 6}
شما می توانید از نمایه سازی برای دسترسی، تخصیص و به روز رسانی عناصر در موقعیتی از آرایه استفاده کنید:
arr[3] = "three"
کد بالا رشته را به عنوان چهارمین ورودی متغیر آرایه به روز می کند یا درج می کند.
Slices in Go
Go برش هایی را به عنوان جایگزینی برای آرایه ها برای برخورد با داده هایی با طول نامحدود ارائه می دهد. برش ها شبیه آرایه ها هستند، با این تفاوت که می توانید طول برش ها را تغییر دهید.
برای ایجاد یک برش باید از تابع ساخت داخلی استفاده کنید. نوع داده و طول اولیه برش را به تابع make ارسال کنید.
slice := make([]string, 9)
slice[2] = "two"
می توانید از تابع append برای درج عناصر در برش ها استفاده کنید. به طور پیش فرض، تابع append عناصر را در انتهای برش درج می کند.
slice = append(slice, "ten")
از آنجایی که Go یک آرایه جدید در هر عملیات الحاقی ایجاد میکند، ممکن است کار با عملیات افزودن بر روی برشها گران باشد.
Maps in Go
Maps نوع داده داخلی (جفت کلید-مقدار) در Go است. می توانید از تابع make برای ایجاد یک نقشه یا یک اعلان ساده استفاده کنید که در آن باید نقشه را نمونه برداری کنید.
maps := make(map[string]int) // using the make function
maps := map[string]int{"one": 1, "two": 2, "three": 3} // declaring & instantiating a map
با تعیین کلیدها می توانید به مقادیر موجود در نقشه دسترسی پیدا کنید. همچنین، می توانید با تعیین یک جفت کلید-مقدار، مقادیر را در نقشه وارد کنید.
maps["one"] = 1// inserting to the map
one := maps["one"] // accessing element from the map
میتوانید از تابع حذف برای حذف جفتهای کلید-مقدار از نقشهها استفاده کنید. تابع حذف، شناسه نقشه و کلید جفتی را که میخواهید حذف کنید، میگیرد:
delete(maps, "one")
توابع در Go
توابع ابزاری برای قابلیت استفاده مجدد کد در Go هستند. می توانید توابع را با کلمه کلیدی func و به دنبال شناسه تابع اعلام کنید:
funcmain() {
}
توابع می توانند آرگومان ها را بپذیرند و مقادیر را برگردانند. شما باید نوع آرگومان را در کنار شناسه آرگومان ها مشخص کنید.
funcadd(x string, y int)int {
return x + y
}
نوع برگشتی را قبل از بلوک کد تابع مشخص میکنید و برای توابعی که مقادیر را برمیگردانند، مقداری از نوع مشخص شده را برمیگردانید.
سازه ها در Go
Go از نظر طراحی یک زبان شی گرا نیست، اما می توانید ویژگی های شی گرا را در Go با استفاده از ساختارها پیاده سازی کنید.
ساختارها انواع تعریف شده توسط کاربر برای گروه بندی انواع داده های دیگر در یک موجودیت واحد هستند. ساختارهای Go می توانند مقادیری از هر نوع پشتیبانی شده از Go را در خود نگه دارند و توابع می توانند ساختارها را پیاده سازی کنند.
در اینجا چگونه می توانید یک ساختار را در Go اعلام کنید:
type Game struct {
Name string
Year int
PlayTime float64
Players any
Countries map[string]string
}
ساختار Game دارای فیلدهایی با انواع نقشه، رشته، عدد صحیح و ممیز شناور است. میتوانید ساختارها را با مقادیر پیشفرض نمونهسازی کنید یا مقادیری را به آنها اختصاص دهید.
var mko Game // default value instantiation
// instantiating with values
mko := Game{
Name: "Value",
Year: 1231,
PlayTime: 1345412,
Players: [2]string{"9", "stuff"},
data: map[string]int{"one": 1, "two": 2, "three": 2},
}
توابع می توانند انواع ساختار را پیاده سازی کرده و به آنها دسترسی داشته باشند. شما باید قبل از شناسه تابع، پارامتر ساختار را مشخص کنید.
func(g Game)FindGame(name string) {
a := g.Year // accessing struct fields
var b = g.Countries // accessing struct fields
}
وقتی یک ساختار را به یک تابع ارسال می کنید، تابع به فیلدهای ساختار دسترسی دارد و تابع به یک متد ساختاری تبدیل می شود.
Go موارد استفاده زیادی دارد
شما اصول اولیه زبان برنامه نویسی Go و نحو شروع نوشتن برنامه های Go را یاد گرفته اید.
زمینه ها و برنامه های زیادی وجود دارد که می توانید از Go استفاده کنید. Go عموماً به عنوان یک زبان سمت سرور استفاده می شود و همیشه می توانید ساخت برنامه های مبتنی بر وب را نیز با آن کاوش کنید.