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 را بررسی کنید :
برای نمونه کد زیر را ببینید :
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}
در بالا ما مقدار 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.10.3 کلمه else #
شرط با else فرمتش مانند زیر است :
در بالا اگر 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.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.10.5 شرط تو در تو (nested) #
شما می توانید شرط تو در تو (nested) داشته باشید (برای توسعه پروژه بهتره است کمتر استفاده از کنید از شرط تو در تو)
در زیر یک نمونه شرط تو در تو به همراه 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.10.6 تعریف شرط و قرار دادن condition در متغیر کوتاه #
در زبان گو شرط ها امکان تعریف متغیر کوتاه برای condition را دارد که می توانید در همان خط شرط برقراری شرط را بررسی کنید.
در زیر یک مثال ساده زدیم که توضیح می دهیم :
1package main
2
3import "fmt"
4
5func main() {
6 if a := 6; a > 5 {
7 fmt.Println("a is greater than 5")
8 }
9}
در بالا ما یک متغیر کوتاه با نام 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}
در مثال فوق ما حرف b انگلیسی را به متغیر کوتاه ch دادیم و سپس ch جهت بررسی هریک case ها پس ;
نقطه ویرگول قرار دادیم. و در نهایت در هر یک از case بررسی کردیم کدام مقدار برابر ch است.
1.10.8 Switch خودآزمون #
تفاوت ساختار و خروجی چهار فرمت مشابه زیر را بررسی کنید:
کدها در زمان اجرا یا پیش از آن، در برخی IDE یا Code Editor(ها) فرمت میشوند. هدف این خودآزمون دقت به ساختار ابزار switch است.