golang 流程控制

2021-10-09 03:20:18 字數 3326 閱讀 3407

3.迴圈結構

1、無返回型別

2、有返回型別

流程控制

主要是三大流程控制流程控制語句

1)順序控制

2)分支控制

3)迴圈控制

程式從上到下逐行地執行,中間沒有任何判斷和跳轉。

注意基本語法

if 條件表示式 

條件表示式為true時,就會執行的**,注意是必須有的,就算你值寫一行**

// golang支援在if中直接定義乙個變數

if age :=

20;age >

18

if 條件表示式 

else

// 注意

1.條件表示式為true時,就會執行**塊1,否則就執行**塊2,注意是必須有的

2.雙分支只會執行其中的乙個分支

if 條件表示式 

else

if 條件表示式

else

if 條件表示式

else

// 注意

else不是必須的,但多分支只能執行乙個執行入口

在乙個分支結構中又完整的巢狀了另乙個完整的分支結構,裡面的分支的結構稱為內層分支,外面的分支結構稱為外層分支。巢狀分支不宜過多,建議控制在3層內。
switch語句用於基於不同條件執行不同動作,每乙個case分支都是唯一的,從上到下逐一測試,直到匹配為止。

匹配項後面也不需要再加break

switch 表示式

// 注意

1.先執行switch的表示式得到值。然後執行case的語句,進行比較,遇到相等的,就比配到,執行對應的case的語句塊,然後退出switch,如果沒有匹配成功,就會執行default語句

2.case後的表示式可以有多個,用逗號隔開

3.switch 後面也可以不帶表示式,直接跟上(:)類似 if

-case 分支來使用

switch:4.

switch 後面也可以直接宣告/定義乙個變數,以分號結尾(不推薦)

switch grade:=90;

5.switch穿透-fallthough,

如果在case語句塊後增加fallthrough,會繼續執行下乙個case

,var num int=20

switch num

6.type

-switch

:// 判斷某個inte***ce 變數中實際指向的變數型別

var x inte***ce

var y =

10.0

x = y

switch i:=x.

(type

)

如果判斷的具體數值不多,而且符合整數、浮點數、字元、字串這幾種型別。建議使用swtich語句,簡潔高效。

其他情況:對區間判斷和結果為bool型別的判斷,使用if, if的使用範圍更廣。

for 迴圈變數初始化 ;迴圈條件 ; 迴圈變數迭代

// 注意省略情況

1. 省略初始化迴圈變數、迴圈變數迭代: //相當於while迴圈

for i >

10 迴圈變數初始化

說明:1.此for迴圈是乙個無限迴圈

2.break就是來跳出for語句

2.全部省略 // 無限迴圈

1.保留分號

for;;

2.不保留分號

// 實現 while

// 實現 do - while

for

for

迴圈操作(語句)

迴圈變數迭代

}

迴圈變數初始化

for}1.先執行,再判斷,因此至少執行一次

2.迴圈條件成立後,就會執行break,跳出for 迴圈,結束迴圈

1.初始語句

開始迴圈執行的語句, 第一次迴圈前執行的語句,一般使用初始語句執行變數初始化,如果變數在此處被宣告,其作用域將被侷限在這個 for 的範圍內。 

初始語句可以被忽略,但是初始語句之後的分號必須要寫,

2.條件表示式

控制是否迴圈的開關, 每次迴圈開始前都會計算條件表示式,

表示式為 true :則迴圈繼續,

表示式為false :結束迴圈

表示式忽略 :後預設形成無限迴圈。

3.結束語句

在結束每次迴圈前執行的語句,如果迴圈被 break、goto、return、panic 等語句強制退出,結束語句不會被執行。

乙個迴圈放在另乙個迴圈體內,就形成了巢狀迴圈,建議一般使用兩層,最多不適用三層

實質就是內層迴圈的迴圈條件為false時,才會跳出內層迴圈,才結束外層的 當次 迴圈

外層迴圈m次,內層迴圈n次,則內層迴圈體需要執行 m * n次

編譯後先易後難,將乙個複雜的問題分解為簡單的問題,

1. break

// break後面可以指定標籤,跳出標籤對應的for迴圈

// 為不帶標籤的break只能終止最內層(innermost)的迴圈,如果像終止外部的迴圈,就得用標籤了:

lable 2

:for i :=

0;i <

4; i++

}}

// 跨越邊界會報錯	 break is not in a loop, switch, or select
2. fallthrough

2.contine

跳出本次迴圈,執行下一次迴圈

可以通過標籤指明要跳過的哪一層迴圈,調到標籤對應的 for 迴圈處

here:

for i:=

0;i<

4;i++

fmt.

print

("i="

,i,"j="

,j)}}/*

i= 0 j= 1

i= 1 j= 1

i= 2 j= 1

i= 3 j= 1

*/

3.goto

可以無條件跳到程式中指定的行,接著往下執行

goto語句通常與條件語句配合使用。可用來實現條件轉移,跳出迴圈體等功能。

不建議使用,以免造成程式流程的混亂,使理解和除錯程式都產生困難

if n > 20

lable2:

4.return

golang 流程控制

toc golang提供了下面幾個關鍵字 if else for switch case fallthrough select break continue goto等,實現程式的分支控制,並且賦予它們不同的用法。在本節中我們會重點討論除了select的其他關鍵字,select會放在併發和通訊的時候...

Golang 流程控制

package main import fmt func main else if age 18 變數寫在條件中,不會對全域性有影響 if age2 18 age2 18else if age2 18 package main import fmt func main 忽略初始語句 需要提前宣告 i...

Golang基礎 流程控制

package main import fmt func main package main import fmt 單分支控制 func main package main import fmt func main package main import fmt 多分支控制 多分支只能有乙個執行入口...