دستور if تو در تو

می‌توان از دستور if تو در تو در Go استفاده کرد. یک دستور ساده if در داخل دستور if دیگر.

if condition {
    code to execute

    if  condition {
         code to execute 
    }
    else if condition {
        if condition {
           code to execute
        }
    }
}
else {
    if condition {
       code to execute 
    }
}

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

  1: package main
  2: 
  3: import "fmt"
  4: 
  5: func main() {
  6: 
  7:     var age    int
  8:     var gender string
  9: 
 10:     fmt.Print("Enter your age: ")
 11:     fmt.Scanln(&age)
 12: 
 13:     fmt.Print("Enter your gender: ")
 14:     fmt.Scanln(&gender)
 15: 
 16:     if (age > 12) {
 17:         if (age < 20) {
 18:             if (gender == "male") {
 19:                 print("You are a teenage boy.")
 20:             } else {
 21:                 print("You are a teenage girl.")
 22:             }
 23:         } else {
 24:             print("You are already an adult.")
 25:         }
 26:     } else {
 27:         print("You are still too young.")
 28:     }
 29: }
Enter your age: 18
Enter your gender: male
You are a teenage boy.
Enter your age: 12
Enter your gender: female
You are still too young.

اجازه بدهید که برنامه را کالبد شکافی کنیم. ابتدا برنامه از شما درباره سنتان سؤال می‌کند (خط 10). در خط 13 درباره جنستان از شما سؤال می‌کند. سپس به اولین دستور if می‌رسد (خط 16). در این قسمت اگر سن شما بیشتر از 12 سال باشد برنامه وارد بدنه دستور if می‌شود در غیر اینصورت وارد بلوک else (خط 26) مربوط به همین دستور if می‌شود.
حال فرض کنیم که سن شما بیشتر از 12 سال است و شما وارد بدنه اولین if شده‌اید. در بدنه اولین if دو دستور if دیگر را مشاهده می‌کنید. اگر سن کمتر 20 باشد شما وارد بدنه if دوم می‌شوید و اگر نباشد به قسمت else متناظر با آن می‌روید (خط 23). دوباره فرض می‌کنیم که سن شما کمتر از 20 باشد، در اینصورت وارد بدنه if دوم شده و با یک if دیگر مواجه می‌شوید (خط 18). در اینجا جنسیت شما مورد بررسی قرار می‌گیرد که اگر برابر “male” باشد، کدهای داخل بدنه سومین if اجرا می‌شود در غیر اینصورت قسمت else مربوط به این if اجرا می‌شود (خط 20). پیشنهاد می‌شود که از if تو در تو در برنامه کمتر استفاده کنید چون خوانایی برنامه را پایین می‌آورد.