首頁 > 後端開發 > Golang > golang流程控制語句有哪些

golang流程控制語句有哪些

青灯夜游
發布: 2022-12-28 18:00:00
原創
4193 人瀏覽過

流程控制語句:1、if語句,由一個布林表達式後緊接一個或多個語句組成;2、「if…else」語句,else中的表達式在布林表達式為false時執行;3、switch語句,用於基於不同條件執行不同動作;4、select語句;5、for循環語句,語法「for k,v := range oldmap{newmap[k]=v}」;6、迴圈控制語句break、continue、goto。

golang流程控制語句有哪些

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

下面我們來了解關於golang流程控制語句的基本內容。

1、條件分支語句

和c語言類似,相關的條件語句如下表所示:

語句 描述
#if 語句 if 語句由一個布林表達式後緊跟著一個或多個語句組成。
if…else 語句 if 語句 後可以使用可選的 else 語句, else 語句中的表達式在布林表達式為 false 時執行。
switch 語句 switch 語句用於基於不同條件執行不同動作。
select 語句 select 語句類似於 switch 語句,但是select會隨機執行一個可運行的case。如果沒有case可運行,它將阻塞,直到有case可運行。
  • if語句
    語法如下:
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}
登入後複製
  • if-else語句
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
} else {
	/* 在布尔表达式为 false 时执行 */
}
登入後複製
  • switch語句
    其中的變數<span class="hljs-attribute">v</span>可以是任何類型,val1val2可以是同類型的任意值,類型不限於常數或整數,或最終結果為相同類型的表達式。
switch v {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}
登入後複製
  • select語句
    select 是 Go 中的一個控制結構,類似於用於通訊的 switch 語句。每個 case 必須是一個通訊操作,要嘛是發送要嘛是接收。它將隨機執行一個可運行的 case。如果沒有 case 可運行,它將阻塞,直到有 case 可運行。一個預設的子句應該總是可運行的。
select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s);
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}
登入後複製

注意:

  • 每個case必須都是一個通訊
  • 所有channel表達式都會被求值,所有被傳送的表達式都會被求值
  • 如果任意某一個通訊都可以,它就執行,其他就忽略
  • 如果有多個case都可以運行,select就會隨機挑選一個來執行。
  • 如果沒有一個case可以被執行:如果有default子句,就執行default子句,select將被阻塞,直到某個通訊可以運行,從而避免飢餓問題。

2、循環語句

#2.1 迴圈處理語句

與多數語言不同的是,Go語言中的循環語句只支援for 關鍵字,而不支援while 和do-while 結構,關鍵字for 的基本使用方法與C語言和 C  中非常接近。

go中時使用for實現循環的,共有三種形式:


語法
#和c語言中的for相同for init; condition; post {}
和c語言中的while相同for condition{}
和c語言中的<span class="hljs-function"><span class="hljs-title">for</span><span class="hljs-params">(;;) </span></span>相同for{}

#除此之外,for迴圈還可以直接使用range對slice、map、陣列以及字串等進行迭代循環,格式如下:

for key, value := range oldmap {
	newmap[key] = value
}
登入後複製

#2.2 循環控制語句

控制語句詳解
#break中斷跳出迴圈或switch語句
continue跳過目前迴圈的剩餘語句,然後繼續下一輪迴圈
goto語句將控制權轉移到被標記的語句

1、break

break主要用于循环语句跳出循环,和c语言中的使用方式是相同的。且在多重循环的时候还可以使用label标出想要break的循环。
实例代码如下:

a := 0
for a<5 {
	fmt.Printf("%d\n", a)
	a++
	if a==2 {
		break;
	}
}
/* output
0
1
2
*/
登入後複製

2、continue

Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。在多重循环中,可以用标号 label 标出想 continue 的循环。
实例代码如下:

    // 不使用标记
    fmt.Println("---- continue ---- ")
    for i := 1; i <= 3; i++ {
        fmt.Printf("i: %d\n", i)
            for i2 := 11; i2 <= 13; i2++ {
                fmt.Printf("i2: %d\n", i2)
                continue
            }
    }

/* output
i: 1
i2: 11
i2: 12
i2: 13
i: 2
i2: 11
i2: 12
i2: 13
i: 3
i2: 11
i2: 12
i2: 13
*/

    // 使用标记
    fmt.Println("---- continue label ----")
    re:
        for i := 1; i <= 3; i++ {
            fmt.Printf("i: %d", i)
                for i2 := 11; i2 <= 13; i2++ {
                    fmt.Printf("i2: %d\n", i2)
                    continue re
                }
        }

/* output
i: 1
i2: 11
i: 2
i2: 11
i: 3
i2: 11
*/
登入後複製

3、goto

goto语句主要是无条件转移到过程中指定的行。goto语句通常和条件语句配合使用,可用来实现条件转移、构成循环以及跳出循环体等功能。但是并不主张使用goto语句,以免造成程序流程混乱。
示例代码如下:

var a int = 0
LOOP: for a<5 {
	if a == 2 {
		a = a+1
		goto LOOP
	}
	fmt.Printf("%d\n", a)
	a++
}

/*
output:
0
1
2
3
4
*/
登入後複製

以上代码中的LOOP就是一个标签,当运行到goto语句的时候,此时执行流就会跳转到LOOP标志的哪一行上。

【相关推荐:Go视频教程编程教学

以上是golang流程控制語句有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板