سلام دوستان
در جلسات قبلی مفهوم متغیر رو توضیح دادم، حالا می خوام درمورد انواع روش های تعریف متغیر و constant (ثابت) توضیح بدم.
تعریف متغیر
در گو، می تونید از کلمه ی کلیدی var برای تعریف متغیر استفاده کنید.
package main import "fmt" func main() { var s string = "Hello World" fmt.Println(s) }
همچنین می تونید ابتدا متغیر رو تعریف و سپس به اون مقدار بدید.
package main import "fmt" func main() { var s string s := "Hello World" fmt.Println(s) }
همچنین می تونید متغیر رو خارج از بدنه ی تابع و به صورت عمومی تعریف کنید:
package main import "fmt" var s string = "Hello World" func main() { fmt.Println(s) }
همچنین می تونید چندین متغیر رو توی یه خط تعریف کنید:
package main import "fmt" func main() { var d, e, f = "world", 13, 24 fmt.Println(d, e, f) }
اگه به متغیر مقدار ندید، با توجه به تایپی که داره مقدار پیشفرض میگیره مثلا برای رشته مقدار ""
می گیره.
تعریف متغیر به صورت مختصر
در این روش بدون ذکر نوع متغیر و بدون استفاده از کلمه ی کلیدی var متغیر رو تعریف می کنیم و در همون هنگام بهش مقدار هم میدیم.
این نوع تعریف متغیر فقط داخل تابع امکان پذیره و دسترسی به اون متغیر رو محدود به تابع می کنه.
package main import "fmt" func main() { s := "Hello World" fmt.Println(s) }
مقدار ثابت (constant)
مقدار ثابت (constant) مثل متغیر ها ولی با کلید واژه const تعریف میشن. تفاوتی که constant ها با سایر متغیرها داره اینه که در طول اجرای کد مقدار اون ها غیرقابل تغییر هست و این تضمین را به شما می کنن هیچ چیزی در طول اجرا باعث تغییر مقدار constant نمیشه و اگه در جایی مقدار اون رو تغییر بدید هنگام کامپایل ارور میده.
package main import "fmt" func main() { const s string = "world" fmt.Println(s) }
تو گو می تونید بدون تعریف نوع یه مقدار ثابت تعریف کنید:
package main import "fmt" func main() { const s = "world" fmt.Println(s) }
استفاده از iota در constant
شناسه iota برای ایجاد اعداد auto increment (اعداد افزایشی) و فقط با constant قابل استفاده است. تایپ پیشفرض iota از نوع int و مقدار پیشفرض اون برابر صفر هست.
ایجاد auto increment بدون iota
const ( a = 0 b = 1 c = 2 )
ایجاد auto increment با iota
const ( a = iota // 0 b // 1 c // 2 )
نحوه ایجاد enum
متغیرهای enum یه لیست ترتیبی هستن و یه جورایی برای دسته بندی یه نوع خاص و دادن اسامی مورد نظر به اون ها به کار میرن. مثلا میشه اسامی ماه های سال رو به صورت یه enum تعریف کرد و ازشون استفاده کرد.
package main import "fmt" type Month uint8 const ( farvardin Month = iota ordibehesht khordad tir mordad shahrivar mehr aban azar day bahman esfand ) func main() { fmt.Println(bahman) fmt.Println(aban) fmt.Println(mordad) fmt.Println(farvardin) }
نادیده گرفتن مقدار اول iota
وقتی که داریم از iota
استفاده میکنیم شاید هنگام استفاده از auto increament نیاز باشد مقدار اول را نادیده بگیریم. برای اینکار میتونیم از _
استفاده کنیم
const ( _ = iota // ignore a // 1 b // 2 c // 3 )