亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go語言流程控制詳情

 更新時(shí)間:2022年03月31日 10:36:06   作者:蘇州程序大白  
這篇文章主要介紹了Go語言流程控制詳情,流程控制包含分三大類:條件判斷,循環(huán)控制和無條件跳轉(zhuǎn)。下面關(guān)于更多相關(guān)內(nèi)容需要的小伙伴可以參考一下

1、流程控制

流程控制在編程語言中是最偉大的發(fā)明了,因?yàn)橛辛怂?,你可以通過很簡(jiǎn)單的流程描述來表達(dá)很復(fù)雜的邏輯。

流程控制包含分三大類:條件判斷,循環(huán)控制和無條件跳轉(zhuǎn)。

2、if 語句

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

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

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

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

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

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

//這個(gè)地方如果這樣調(diào)用就編譯出錯(cuò)了,因?yàn)?x 是條件里面的變量
fmt.Println(x)

多個(gè)條件的時(shí)候如下所示:

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 語句——請(qǐng)明智地使用它。用 goto 跳轉(zhuǎn)到必須在當(dāng)前函數(shù)內(nèi)定義的標(biāo)簽。

例如假設(shè)這樣一個(gè)循環(huán):

func myFunc() {
i := 0
Here: //這行的第一個(gè)詞,以冒號(hào)結(jié)束作為標(biāo)簽
println(i)
i++
goto Here //跳轉(zhuǎn)到 Here 去 }

標(biāo)簽名是大小寫敏感的。

4、for語句

Go 里面最強(qiáng)大的一個(gè)控制邏輯就是 for,它即可以用來循環(huán)讀取數(shù)據(jù),又可以當(dāng)作 while 來 控制邏輯,還能迭代操作。它的語法如下:

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

expression1expression2expression3 都是表達(dá)式,其中 expression1 和 expression3 是 變量聲明或者函數(shù)調(diào)用返回值之類的,expression2 是用來?xiàng)l件判斷,expression1在循環(huán)開始之前調(diào)用,expression3 在每輪循環(huán)結(jié)束之時(shí)調(diào)用。

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

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

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

如下:

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

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

對(duì),這就是 while 的功能。

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

在循環(huán)里面有兩個(gè)關(guān)鍵操作 break 和 continue ,break操作是跳出當(dāng)前循環(huán),continue是跳過本次循環(huán)。當(dāng)嵌套過深的時(shí)候,break 可以配合標(biāo)簽使用,即跳轉(zhuǎn)至標(biāo)簽所指定的位置,

詳細(xì)參考如下例子:

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 還可以跟著標(biāo)號(hào),用來跳到多重循環(huán)中的外層循環(huán),for 配合 range 可以用于讀取 slice 和 map 的數(shù)據(jù):

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

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

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

5、switch

有些時(shí)候你需要寫很多的 if-else 來實(shí)現(xiàn)一些邏輯處理,這個(gè)時(shí)候代碼看上去就很丑很冗長(zhǎng),而且也不易于以后的維護(hù),這個(gè)時(shí)候 switch 就能很好的解決這個(gè)問題。

它的語法如下:

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 非常靈活,表達(dá)式不必是常量或整數(shù)執(zhí)行的過程從上至下,直到找到匹配項(xiàng);而如果 switch 沒有表達(dá)式,它會(huì)匹配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")
}

在上面代碼中,我們把很多值聚合在了一個(gè) case 里面,同時(shí),Go 里面 switch默認(rèn)相當(dāng)于每 個(gè)case 最后帶有break,匹配成功后不會(huì)自動(dòng)向下執(zhí)行其他 case,而是跳出整個(gè) switch,但是可以使用 fallthrough強(qiáng)制執(zhí)行后面的 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")
}

上面的程序?qū)⑤敵觯?/strong>

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

到此這篇關(guān)于Go語言流程控制詳情的文章就介紹到這了,更多相關(guān)Go流程控制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang 語言控制并發(fā) Goroutine的方法

    Golang 語言控制并發(fā) Goroutine的方法

    本文我們介紹了不同場(chǎng)景中分別適合哪種控制并發(fā) goroutine 的方式,其中,channel 適合控制少量 并發(fā) goroutine,WaitGroup 適合控制一組并發(fā) goroutine,而 context 適合控制多級(jí)并發(fā) goroutine,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Golang標(biāo)準(zhǔn)庫container/list的用法圖文詳解

    Golang標(biāo)準(zhǔn)庫container/list的用法圖文詳解

    提到單向鏈表,大家應(yīng)該是比較熟悉的了,這篇文章主要為大家詳細(xì)介紹了Golang標(biāo)準(zhǔn)庫container/list的用法相關(guān)知識(shí),感興趣的小伙伴可以了解下
    2024-01-01
  • golang利用函數(shù)閉包實(shí)現(xiàn)簡(jiǎn)單的中間件

    golang利用函數(shù)閉包實(shí)現(xiàn)簡(jiǎn)單的中間件

    中間件設(shè)計(jì)模式是一種常見的軟件設(shè)計(jì)模式,它在許多編程語言和框架中被廣泛應(yīng)用,這篇文章主要為大家介紹一下golang利用函數(shù)閉包實(shí)現(xiàn)一個(gè)簡(jiǎn)單的中間件,感興趣的可以了解下
    2023-10-10
  • Go?1.21.0?新增結(jié)構(gòu)化日志記錄標(biāo)準(zhǔn)庫log/slog使用詳解

    Go?1.21.0?新增結(jié)構(gòu)化日志記錄標(biāo)準(zhǔn)庫log/slog使用詳解

    這篇文章主要為大家介紹了Go?1.21.0?新增結(jié)構(gòu)化日志記錄標(biāo)準(zhǔn)庫log/slog使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • golang時(shí)間/時(shí)間戳的獲取與轉(zhuǎn)換實(shí)例代碼

    golang時(shí)間/時(shí)間戳的獲取與轉(zhuǎn)換實(shí)例代碼

    說實(shí)話,golang的時(shí)間轉(zhuǎn)化還是很麻煩的,最起碼比php麻煩很多,下面這篇文章主要給大家介紹了關(guān)于golang時(shí)間/時(shí)間戳的獲取與轉(zhuǎn)換的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Go日志框架zap增強(qiáng)及源碼解讀

    Go日志框架zap增強(qiáng)及源碼解讀

    這篇文章主要為大家介紹了Go日志框架zap增強(qiáng)及源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go語言操作Excel利器之excelize類庫詳解

    Go語言操作Excel利器之excelize類庫詳解

    Excelize是Go語言編寫的用于操作Office Excel文檔基礎(chǔ)庫,基于ECMA-376,ISO/IEC 29500國際標(biāo)準(zhǔn),可以使用它來讀取、寫入由Excel 2007及以上版本創(chuàng)建的電子表格文檔,下面這篇文章主要給大家介紹了關(guān)于Go語言操作Excel利器之excelize類庫的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 詳解golang執(zhí)行Linux shell命令完整場(chǎng)景下的使用方法

    詳解golang執(zhí)行Linux shell命令完整場(chǎng)景下的使用方法

    本文主要介紹了golang執(zhí)行Linux shell命令完整場(chǎng)景下的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Golang實(shí)現(xiàn)DFA算法對(duì)敏感詞過濾功能

    Golang實(shí)現(xiàn)DFA算法對(duì)敏感詞過濾功能

    DFA算法是確定性有限自動(dòng)機(jī),其特征是,有一個(gè)有限狀態(tài)集合和一些從一個(gè)狀態(tài)通向另一個(gè)狀態(tài)的邊,每條邊上標(biāo)記有一個(gè)符號(hào),通俗的講DFA算法就是把你要匹配的做成一顆字典樹,然后對(duì)你輸入的內(nèi)容進(jìn)行匹配的過程,本文將利用DFA算法實(shí)現(xiàn)敏感詞過濾,需要的可以參考一下
    2023-10-10
  • Golang?動(dòng)態(tài)腳本調(diào)研詳解

    Golang?動(dòng)態(tài)腳本調(diào)研詳解

    這篇文章主要為大家介紹了Golang?動(dòng)態(tài)腳本調(diào)研詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論