GO

GO — متغیرها (Variables)

آخرین بروزرسانی: 1404/08/14

متغیرها (Variables)

«متغیر (Variable)» ظرفی برای نگه داشتن داده است. مثل جعبه ی برچسب دار. داخلش عدد، متن یا منطق می گذاریم و بعد استفاده می کنیم.

نوع های پایه متغیر

در Go نوع های مهم داریم. نوع یعنی شکلِ داده. چند نمونه رایج:

  • int: عدد صحیح؛ مثل 123 یا -123.
  • float32: عدد اعشاری؛ مثل 19.99 یا -19.99.
  • string: متن با ""؛ مثل "Hello World".
  • bool: فقط true یا false.

جزئیات بیشتر را در نوع داده ها می بینی.

ایجاد متغیر با var

روش اول با var است. نام و نوع را مشخص کن. مقدار هم می توانی بدهی.

package main
import (
  "fmt"
)

func main() {
  var student1 string = "John"
  var student2 string = "Jane"
  var x int = 2
  fmt.Println(student1)
  fmt.Println(student2)
  fmt.Println(x)
}

مشاهده در ادیتور

نکته: می توانی نوع یا مقدار یا هر دو را مشخص کنی.

ایجاد سریع با :=

روش دوم با := است. نوع از روی مقدار «استنتاج (Inferred)» می شود؛ یعنی کامپایلر حدس می زند.

package main
import (
  "fmt"
)

func main() {
  name := "Jane"
  age := 15
  passed := true
  fmt.Println(name)
  fmt.Println(age)
  fmt.Println(passed)
}

مشاهده در ادیتور

هشدار: با := حتماً باید همان جا مقدار بدهی.

بدون مقدار اولیه؛ مقدار پیش فرض

اگر مقدار ندهی، Go مقدار پیش فرض می گذارد. برای string رشته خالی، برای int صفر، برای bool false.

package main
import (
  "fmt"
)

func main() {
  var a string
  var b int
  var c bool
  fmt.Println(a)
  fmt.Println(b)
  fmt.Println(c)
}

مشاهده در ادیتور

مقداردهی بعد از اعلان

گاهی مقدار را بعداً می دانی. اول اعلام کن، سپس مقدار بده.

package main
import (
  "fmt"
)

func main() {
  var student1 string
  student1 = "John"
  fmt.Println(student1)
}

مشاهده در ادیتور

تفاوت های کلیدی: var و :=

  • var بیرون و داخل تابع مجاز است.
  • := فقط داخل تابع مجاز است.
  • با var می توانی جداگانه مقدار بدهی.
  • با := اعلان و مقداردهی هم زمان است.
package main
import (
  "fmt"
)

var a int
var b int = 2
var c = 3

func main() {
  a = 1
  fmt.Println(a)
  fmt.Println(b)
  fmt.Println(c)
}

مشاهده در ادیتور

نمونه خطا با := بیرون از تابع

اگر بیرون از تابع از := استفاده کنی، خطا می گیری.

package main
import (
  "fmt"
)

a := 1

func main() {
  fmt.Println(a)
}

مشاهده در ادیتور

گام های تمرینی

  1. یک int با var بساز.
  2. یک string با := بساز.
  3. یکی را بدون مقدار اعلام کن و مقدارش را چاپ کن.

ادامه مسیر: برگرد به کامنت ها یا وارد نوع داده ها شو. همچنین به متغیرها دوباره سر بزن.

جمع بندی سریع

  • var همه جا مجاز است.
  • := فقط داخل تابع است.
  • بی مقدار، مقدار پیش فرض می گیرد.
  • نوع با مقدار می تواند استنتاج شود.
  • هر متغیر نام واضح داشته باشد.