中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言流程控制的示例分析

發布時間:2022-03-31 12:33:33 來源:億速云 閱讀:116 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Go語言流程控制的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1、流程控制

流程控制在編程語言中是最偉大的發明了,因為有了它,你可以通過很簡單的流程描述來表達很復雜的邏輯。

流程控制包含分三大類:條件判斷,循環控制和無條件跳轉。

2、if 語句

if 也許是各種編程語言中最常見的了,它的語法概括起來就是:

如果滿足條件就做某事,否則做另一件事。

Go 里面 if 條件判斷語句中不需要括號,如下代碼所示:

if x > 10 {
    fmt.Println("x is greater than 10")
} else {
    fmt.Println("x is less than 10")
}

Go 的 if 還有一個強大的地方就是條件判斷語句里面允許聲明一個變量,這個變量的作用域,只能在該條件邏輯塊內,其他地方就不起作用了如下所示:

// 計算獲取值 x,然后根據 x 返回的大小,判斷是否大于 10。
if x := computedValue(); x > 10 {
    fmt.Println("x is greater than 10")
} else {
    fmt.Println("x is less than 10")
}

//這個地方如果這樣調用就編譯出錯了,因為 x 是條件里面的變量
fmt.Println(x)

多個條件的時候如下所示:

if count == 3 {
    fmt.Println("The count is equal to 3")
} else if count < 3 {
    fmt.Println("The count is less than 3")
} else {
    fmt.Println("The count is greater than 3")
}

3、goto

Go 有 goto 語句&mdash;&mdash;請明智地使用它。用 goto 跳轉到必須在當前函數內定義的標簽。

例如假設這樣一個循環:

func myFunc() {
i := 0
Here: //這行的第一個詞,以冒號結束作為標簽
println(i)
i++
goto Here //跳轉到 Here 去 }

標簽名是大小寫敏感的。

4、for語句

Go 里面最強大的一個控制邏輯就是 for,它即可以用來循環讀取數據,又可以當作 while 來 控制邏輯,還能迭代操作。它的語法如下:

for expression1; expression2; expression3 {
    //...
}

expression1expression2expression3 都是表達式,其中 expression1 和 expression3 是 變量聲明或者函數調用返回值之類的,expression2 是用來條件判斷,expression1在循環開始之前調用,expression3 在每輪循環結束之時調用。

一個例子比上面講那么多更有用,那么我們看看下面的例子吧:

package main
import "fmt"
func main(){
    sum := 0;
    for index:=0; index < 10 ; index++ {
    sum += index
}
    fmt.Println("sum is equal to ", sum)
}
// 輸出:sum is equal to 45

有些時候需要進行多個賦值操作,由于 Go 里面沒有,操作,那么可以使用平行賦值 i, j = i+1, j-1。有些時候如果我們忽略 expression1expression3

如下:

sum := 1
for ; sum < 1000; {
    sum += sum
}

其中;也可以省略,那么就變成如下的代碼了,是不是似曾相識?

對,這就是 while 的功能。

sum := 1
for sum < 1000 {
    sum += sum
}

在循環里面有兩個關鍵操作 break 和 continue ,break操作是跳出當前循環,continue是跳過本次循環。當嵌套過深的時候,break 可以配合標簽使用,即跳轉至標簽所指定的位置,

詳細參考如下例子:

for index := 10; index > 0; index-- {
if index == 5{
    break // 或者 continue
}
    fmt.Println(index)
}
// break 打印出來 10、9、8、7、6
// continue 打印出來 10、9、8、7、6、4、3、2、1

break continue 還可以跟著標號,用來跳到多重循環中的外層循環,for 配合 range 可以用于讀取 slice 和 map 的數據:

for k,v:=range map {
    fmt.Println("map's key:",k)
    fmt.Println("map's val:",v)
}

由于 Go 支持“多值返回”, 而對于“聲明而未被調用”的變量, 編譯器會報錯, 在這種情況下,可以使用_來丟棄不需要的返回值 例如:

for _, v := range map{
    fmt.Println("map's val:", v)
}

5、switch

有些時候你需要寫很多的 if-else 來實現一些邏輯處理,這個時候代碼看上去就很丑很冗長,而且也不易于以后的維護,這個時候 switch 就能很好的解決這個問題。

它的語法如下:

switch sExpr {
    case expr1:
        some instructions
    case expr2:
        some other instructions
    case expr3:
        some other instructions
    default:
        other code
}

sExpr 和expr1、expr2、expr3 的類型必須一致。Go 的 switch 非常靈活,表達式不必是常量或整數執行的過程從上至下,直到找到匹配項;而如果 switch 沒有表達式,它會匹配true。

i := 10
switch i {
case 1:
    fmt.Println("i is equal to 1")
case 2, 3, 4:
    fmt.Println("i is equal to 2, 3 or 4")
case 10:
    fmt.Println("i is equal to 10")
default:
    fmt.Println("All I know is that i is an integer")
}

在上面代碼中,我們把很多值聚合在了一個 case 里面,同時,Go 里面 switch默認相當于每 個case 最后帶有break,匹配成功后不會自動向下執行其他 case,而是跳出整個 switch,但是可以使用 fallthrough強制執行后面的 case 代碼。

integer := 6
switch integer {
case 4:
    fmt.Println("The integer was <= 4")
case 5:
    fmt.Println("The integer was <= 5")
case 6:
    fmt.Println("The integer was <= 6")
case 7:
    fmt.Println("The integer was <= 7")
case 8:
    fmt.Println("The integer was <= 8")
default:
    fmt.Println("default case")
}

上面的程序將輸出:

The integer was <= 6
The integer was <= 7
The integer was <= 8
default case

感謝各位的閱讀!關于“Go語言流程控制的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

go
AI

南雄市| 新津县| 桃江县| 历史| 达孜县| 安龙县| 商丘市| 云霄县| 碌曲县| 瑞金市| 合作市| 高密市| 常熟市| 乡城县| 武乡县| 夹江县| 阿克| 分宜县| 环江| 乐清市| 遵义县| 陕西省| 寻甸| 东至县| 金塔县| 岐山县| 玛纳斯县| 策勒县| 甘肃省| 商南县| 威信县| 临澧县| 咸丰县| 商都县| 大同市| 朝阳市| 和田市| 汝州市| 晋中市| 老河口市| 永吉县|