Go語言基礎篇(4) —— Go語言循環&判斷&選擇語句

學習目標

掌握條件語句,選擇語句,循環語句數組


條件語句
if a < 5 {   
    return 0 
} else {  
    return 1 
}

注意:函數

條件語句不須要使用括號將條件包含起來();oop

不管語句體內有幾條語句,花括號{}都是必須存在的;學習

左花括號{必須與if或者else處於同一行;code

在if以後,條件語句以前,能夠添加變量初始化語句,使用;間隔;索引

在有返回值的函數中,不容許將「終的」return語句包含在if...else...結構中, 不然會編譯失敗: function ends without a return statement。編譯器

失敗的緣由在於,Go編譯器沒法找到終止該函數的return語句。it

編譯失敗的案例以下:io

func example(x int)  int  {   
  if   x == 0  {         
	return 5    
 } else {        
 	return x   //沒法找到終止該函數的return語句  
  } 
}
選擇語句
switch i {    //i只能爲常量或者整數
    case 0:         
    	fmt.Printf("0")     
    case 1:        
    	fmt.Printf("1")     
    case 2:        
    	fallthrough   //向下執行  
    case 3:         
    	fmt.Printf("3")     
	case 4, 5, 6:   //i等於4|5|6時執行      
    	fmt.Printf("4, 5, 6")     
	default: //其它      
    	fmt.Printf("Default") 
    }

//switch 後也能夠不設置表達式:
switch {     
    case 0 <= Num && Num <= 3:         
    	fmt.Printf("0-3")     
    case 4 <= Num && Num <= 6:         
    	fmt.Printf("4-6")     
    case 7 <= Num && Num <= 9:         
    	fmt.Printf("7-9") 
}

左花括號{必須與switch處於同一行;編譯

條件表達式不限制爲常量或者整數;

單個case中,能夠出現多個結果選項;

只有在case中明確添加fallthrough關鍵字,纔會繼續執行緊跟的下一個case;

循環語句

Go語言中的循環語句只支持for關鍵字,而不支持while和do-while 結構。

/*
格式一 : 與Java中的for相似
 for 賦值語句;判斷語句;運算語句{ 
 }
*/
sum := 0 
for i := 0; i < 10; i++ { //for後面的語句不用();左花括號{必須與for處於同一行。    
    sum += i 
}


/*
格式二: 相似於Java中的foreach
for 索引,(能夠不寫) 值 := range 數組 {
   
}
*/
arr := [...]int{1, 3, 4, 5}
for i, e := range arr {
    t.Log(e,i)
}

/*
格式三: for後跟bool類型的值(能夠使個表達式是bool的語句)
*/

for {  //for後面不跟語句是死循環 (跟true也是)
    sum++      
    if sum > 100 {        
        break  //跳出循環體   
    } 
}


//--------------------------其它用法-------------------------------


//在條件表達式中也支持多重賦值
a := []int{1, 2, 3, 4, 5, 6} 
for i, j := 0, len(a) – 1; i < j; i, j = i + 1, j – 1 {    
    a[i], a[j] = a[j], a[i]
}

//支持continue和break來控制循環,可是它提供了一個更高級的 break,能夠選擇中斷哪個循環,以下例: 
for j := 0; j < 5; j++ {     
    for i := 0; i < 10; i++ {  
        if i > 5 {           
            break JLoop    //break語句終止的是JLoop標籤處的外層循環     
        }     
        fmt.Println(i)     
    } 
} 
JLoop:
相關文章
相關標籤/搜索