目錄
2、循環語句" >2、循環語句
#2.1 迴圈處理語句 " >#2.1 迴圈處理語句
#2.2 循環控制語句" >#2.2 循環控制語句
首頁 後端開發 Golang golang流程控制語句有哪些

golang流程控制語句有哪些

Dec 28, 2022 pm 05:58 PM
golang go語言 流程控制

流程控制語句: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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? 在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? Apr 02, 2025 pm 04:54 PM

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

GoLand中自定義結構體標籤不顯示怎麼辦? GoLand中自定義結構體標籤不顯示怎麼辦? Apr 02, 2025 pm 05:09 PM

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Apr 02, 2025 pm 04:12 PM

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

Golang的目的:建立高效且可擴展的系統 Golang的目的:建立高效且可擴展的系統 Apr 09, 2025 pm 05:17 PM

Go語言在構建高效且可擴展的系統中表現出色,其優勢包括:1.高性能:編譯成機器碼,運行速度快;2.並發編程:通過goroutines和channels簡化多任務處理;3.簡潔性:語法簡潔,降低學習和維護成本;4.跨平台:支持跨平台編譯,方便部署。

在Go編程中,如何正確管理Mysql和Redis的連接與釋放資源? 在Go編程中,如何正確管理Mysql和Redis的連接與釋放資源? Apr 02, 2025 pm 05:03 PM

Go編程中的資源管理:Mysql和Redis的連接與釋放在學習Go編程過程中,如何正確管理資源,特別是與數據庫和緩存�...

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

多進程日誌寫入如何保證並發安全又高效? 多進程日誌寫入如何保證並發安全又高效? Apr 02, 2025 pm 03:51 PM

高效處理多進程日誌寫入的並發安全問題多進程同時寫入同一個日誌文件,如何保證並發安全且高效?這是一個...

使用Go語言連接Oracle數據庫時是否需要安裝Oracle客戶端? 使用Go語言連接Oracle數據庫時是否需要安裝Oracle客戶端? Apr 02, 2025 pm 03:48 PM

使用Go語言連接Oracle數據庫時是否需要安裝Oracle客戶端?在使用Go語言開發時,連接Oracle數據庫是一個常見需求�...

See all articles