初識golang之流程控制

if:
使用的語法如:
if x > 10 {
    fmt.Println("x大於10")
} else {
    fmt.Println("x小於10")
}
條件判斷語句中不須要括號。與其餘語言不一樣的就是條件判斷語句裏容許聲明一個變量,這個變量的做用域在該條件邏輯塊內有效,其餘地方不起做用,如:
if x := randVal(); x > 10 {
    fmt.Println("x大於10")
} else {
    fmt.Println("x小於10")
}

switch:
語法:switch 表達式 {
    case 表達式1:
        程序操做語句
    case 表達式2:
        程序操做語句
}
go中的switch很是的強大,case的值沒必要是標量,而能夠是一個表達式的執行結果,只要表達式的結果類型和條件的類型同樣就能夠了,能夠把多個值集合在一個case裏面,只要條件表達式的值符號此case中的其中一個值就能夠執行case裏面的語句,同時case默認帶有break,匹配成功就不會執行下面的判斷語句了,若是要繼續判斷接下來的case,能夠在case裏面增長fallthrough來強制執行後面的case代碼。若是switch沒有表達式,它會匹配true。如;
i := 10
switch i {
    case 2-1:
        fmt.Println("i的值爲2-1")
    case 2,3,4,5:
        fmt.Println("i的值在2到5之間")
        fallthrough
    case 10:
        fmt.Println("i的值等於10")
    default:
        fmt.Printf("i的值爲:%d\n", i);
}

for:
更其餘語言同樣用來循環讀取數據,但他更強大,go中沒有while,do while等語句,都是經過for語句來實現的。
使用:for 表達式1; 表達式2; 表達式3 {
    執行的程序語句
}
for 判斷語句一樣沒有括號括起來,和其餘語言同樣表達式1在循環開始以前調用,表達式3在每輪循環結束之時調用,表單式2用來進行每次循環的判斷。在go中表達式1和表達式3能夠省略,來當while功能如:
sum := 1
for sum < 100 {
    sum += sum
}

for range這個語句至關的好用相似於foreach或for in語句。用for range能夠來讀取字符串,數組,slice,map,channel的數據,如:
for k, v := range map{
    fmt.Println("map's key:", k)
    fmt.Println("map's value:", v)
}
若是不須要相關的值,可使用"_",來丟棄相關的返回值。如:
for _, v := range arr {
    .....
}
注意:迭代右表達式在循環開始前,一次性的計算好,迭代的變量遵循變量類型的賦值原則,若是是指針指向類型,則在迭代的過程當中,若是有修改相關值,會影響到相關的迭代過程,若是是值拷貝的,在迭代過程當中對原變量進行更改,不會影響對循環前變量值的迭代過程。

break|continue|goto:
和其餘語言同樣經過break來跳出循環,continue來跳過本次循環,break和continue還能夠跟着標號,來跳到多重循環中的外出循環。break也能夠配合標籤來使用,以跳出到指定的標籤位置。goto也和標籤配合使用來使程序跳轉到指定的標籤位置,標籤重新的一行開始,而且與冒號結束,標籤名大小寫敏感。
相關文章
相關標籤/搜索