1.10 شرط (if, switch)

1.10 شرط (if, switch)

1.10.1 شرط (if-else) #

زبان گو همانند ساز سایر زبان ها دارای شرط می باشد که خیلی ساده می توانید از آن استفاده کنید و در زیر ما فرمت استاندارد شرط در زبان گو را قرار دادیم :

1if condition {
2   //Do something
3} else if condition {
4   //Do something
5} else {
6   //Do something
7}

در بالا condition عبارتی است که قرار است وضعیت شرط را مشخص کند و در صورت true شدن شرط بر قرار می شود و در صورت برقرار نشدن شرط اول وارد else if می شود و مجدد یک condition دیگری را چک می کنیم که وضعیتش true می شود یا خیر و در نهایت منتهی می شود به else.

در شرط ما یک یا چندتا condition می توانیم داشته باشیم که این condition ها برای تعیین وضعیت از یکسری عملگرها نظیر && , || , > , < , <= , => , ! و … استفاده می کند.

زبان گو از فرمت های زیر برای ایجاد شرط استفاده می کند :

  • فقط if
  • if-else تو در تو (nested)
  • شرط کوتاه با if

1.10.2 کلمه if به تنهایی #

شما می توانید به تنهایی از if استفاده و یک condition را بررسی کنید :

1if condition {
2   //Do something
3}

برای نمونه کد زیر را ببینید :

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6    a := 6
 7    if a > 5 {
 8        fmt.Println("a is greater than 5")
 9    }
10}
1$ go run main.go
2a is greater than 5

در بالا ما مقدار a را با عدد ۵ بررسی کردیم که آیا a از ۵ بزرگتر است یا خیر؟ و جواب بله a بزرگتر است و شرط برقرار شد.

در زیر مثال دیگر زدیم که چندتا condition را داخل یک شرط بررسی می کنیم برقرار می شود یا خیر :

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6    a := 4
 7    if a > 3 && a < 6 {
 8        fmt.Println("a is within range")
 9    }
10}
1$ go run main.go
2a is within range

1.10.3 کلمه else #

شرط با else فرمتش مانند زیر است :

1if condition {
2   //Do something
3} else {
4   //Do something
5}

در بالا اگر condition برقرار نشود عملیات داخل else صورت میگیرد. که در ادامه یک مثال ساده زدیم :

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6    a := 1
 7    b := 2
 8
 9    if a > b {
10        fmt.Println("a is greater than b")
11    } else {
12        fmt.Println("b is greater than a")
13    }
14}
1$ go run main.go
2b is greater than a

1.10.4 ادامه شرط با else if #

شما با استفاده کلمه else if می توانید condition دیگر را بررسی کرده و در صورت برقرار شدن شرط عملیات را انجام دهید.

1if condition1 {
2   //Do something
3} else if condition2 {
4   //Do something
5} else {
6  //Do something
7}

در زیر ما یک نمونه مثال برای else if زدیم :

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6    age := 29
 7    if age < 18 {
 8        fmt.Println("Kid")
 9    } else if age >= 18 && age < 40 {
10        fmt.Println("Young")
11    } else {
12        fmt.Println("Old")
13    }
14}
1$ go run main.go
2Young

1.10.5 شرط تو در تو (nested) #

شما می توانید شرط تو در تو (nested) داشته باشید (برای توسعه پروژه بهتره است کمتر استفاده از کنید از شرط تو در تو)

1if condition {
2  //Do something
3  if condition2 { 
4    //Do something
5  }
6  //Do something
7}

در زیر یک نمونه شرط تو در تو به همراه else قرار دادیم :

 1if condition1 {
 2   //...
 3} else {
 4   //...
 5   if condition2 {
 6      //...
 7   } else {
 8     //....
 9   }
10   //....
11}

در زیر مثال برای شرط تو در تو زدیم :

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6    a := 1
 7    b := 2
 8    c := 3
 9    if a > b {
10        if a > c {
11            fmt.Println("Biggest is a")
12        } else if b > c {
13            fmt.Println("Biggest is b")
14        }
15    } else if b > c {
16        fmt.Println("Biggest is b")
17    } else {
18        fmt.Println("Biggest is c")
19    }
20}
1$ go run main.go
2Biggest is c

1.10.6 تعریف شرط و قرار دادن condition در متغیر کوتاه #

در زبان گو شرط ها امکان تعریف متغیر کوتاه برای condition را دارد که می توانید در همان خط شرط برقراری شرط را بررسی کنید.

1if statement; condition {
2   //Do something
3}

در زیر یک مثال ساده زدیم که توضیح می دهیم :

1package main
2
3import "fmt"
4
5func main() {
6    if a := 6; a > 5 {
7        fmt.Println("a is greater than 5")
8    }
9}
1$ go run main.go
2a is greater than 5

در بالا ما یک متغیر کوتاه با نام a داخل شرط تعریف کردیم و مقدار 6 را بهش دادیم و سپس با قرار دادن ; برقراری وضعیت شرط را بررسی کردیم.

1.10.7 Switch #

زبان گو ‌مانند برخی از زبان ها از switch پشتیبانی می کند و switch یک روش خیلی خوب برای جلوگیری از else if های بیشتر در شرط می باشد.

1switch statement; expression {
2case expression1:
3     //Dosomething
4case expression2:
5     //Dosomething
6default:
7     //Dosomething
8}

زمانیکه switch را تعریف می کنید شما باید statement و expression را برای بررسی قرار دهید و سپس داخل هر یک از case ها وضعیت برقرار بررسی می کنید و در نهایت اگر هیچکدام از case ها برابر با expresstion نباشد از default استفاده میکنیم تا مقدار پیش فرض را برگردانیم.

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6    switch ch := "b"; ch {
 7    case "a":
 8        fmt.Println("a")
 9    case "b", "c":
10        fmt.Println("b or c")    
11    default:
12        fmt.Println("No matching character")    
13    }
14}  
1$ go run main.go
2b or c

در مثال فوق ما حرف b انگلیسی را به متغیر کوتاه ch دادیم و سپس ch جهت بررسی هریک case ها پس ; نقطه ویرگول قرار دادیم. و در نهایت در هر یک از case بررسی کردیم کدام مقدار برابر ch است.

1.10.8 Switch خودآزمون #

تفاوت ساختار و خروجی چهار فرمت مشابه زیر را بررسی کنید:

1switch f(); {
2case true:
3  println(1)
4case false:
5  println(0)
6}
1switch f() 
2{
3case true:
4  println(1)
5case false:
6  println(0)
7}
1switch f() {
2case true:
3  println(1)
4case false:
5  println(0)
6}
1switch f(); true {
2case true:
3  println(1)
4case false:
5  println(0)
6}
کدها در زمان اجرا یا پیش از آن، در برخی IDE یا Code Editor(ها) فرمت می‌شوند. هدف این خودآزمون دقت به ساختار ابزار switch است.
comments powered by Disqus