最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你熟悉Go語言中的分支結(jié)構(gòu)

 更新時間:2022年11月28日 14:13:37   作者:陳明勇  
這篇文章主要和大家分享一下Go語言中的分支結(jié)構(gòu)(if?-?else-if?-?else、switch),文中的示例代碼講解詳細,對我們學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下

分支結(jié)構(gòu)

分支結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計中的基礎(chǔ)。針對分支結(jié)構(gòu),Go 提供了兩種語句形式,一種是 if,另一種是 switch。

if

if 語句是 Go 中最常用、最簡單的分支控制結(jié)構(gòu),它分為單分支、雙分支以及多分支三種用法。if 語句會根據(jù)布爾變量或布爾表達式,在兩個或多個分支中選擇一個執(zhí)行。以下為 if 語句的形式:

if bool_condition {
	// 新分支
}
// 原分支

如果布爾變量或布爾表達式為 true ,則進入新分支執(zhí)行,否則會繼續(xù)按照原分支的代碼去執(zhí)行。

單分支 if

單分支的用法,如果布爾表達式成立,則執(zhí)行新分支的代碼,然后繼續(xù)執(zhí)行原分支的代碼,否則執(zhí)行原分支的代碼,下面是代碼示例:

import "fmt"

func main() {
	num := 3
	if num > 2 {
		fmt.Println("num 大于 2")
	}
	fmt.Println("原分支代碼")
}

打印結(jié)果

num 大于 2
原分支代碼

因為 num > 2 因此,程序運行之后,會執(zhí)行新分支的打印語句以及原分支的打印語句。除了單個布爾表達式以外,還可以加入 &&|| 條件運算符進行條件的組合,例如:

import "fmt"

func main() {
	num := 3
	if num > 2 && num < 10 {
		fmt.Println("num 大于 2 并且 num 小于 10")
	}
	fmt.Println("原分支代碼")
}

雙分支 if-else

雙分支結(jié)構(gòu),if 配合 else 關(guān)鍵字實現(xiàn)。如果表達式為 true,執(zhí)行 分支1,否則執(zhí)行 分支2,然后繼續(xù)執(zhí)行 原分支。下面是代碼示例:

import "fmt"

func main() {
	age := 18
	if age == 18 {
		fmt.Println("您已滿18歲")
	} else {
		fmt.Println("您未滿18歲")
	}
	fmt.Println("原分支代碼")
}

執(zhí)行結(jié)果:

您已滿18歲
原分支代碼

age 的值為 18,因此會執(zhí)行第一個分支的里打印語句,然后繼續(xù)執(zhí)行原分支的打印語句。

多分支 if - else if - else

多分支需要在 ifelse 的形式上,加上 else if 進行實現(xiàn)。如果 if 后面的布爾表達式不成立,則會判斷 else if 后面的布爾表達式,然后進行分支的選擇,下面是代碼示例:

import "fmt"

func main() {
	name := "小明"
	if name == "小紅" {
		fmt.Println("您好,小紅!")
	} else if name == "小明" {
		fmt.Println("您好,小明!")
	} else {
		fmt.Println("您好,陌生人!")
	}
	fmt.Println("原分支代碼")
}

執(zhí)行結(jié)果:

您好,小明!
原分支代碼

程序根據(jù)布爾表達式條件的值,選擇了第二個分支去執(zhí)行代碼。

在 if 語句中聲明變量

if 語句中,布爾表達式之前聲明變量是 Go 語言的慣用法,這種使用方式可以提高代碼的可讀性。由于是在 if 語句中聲明的變量,因此變量的作用域也只在 if 語句中,外部無法訪問這些變量。下面是示例:

import "fmt"

func main() {
	mp := map[string]string{"name": "cmy"}

	if name, ok := mp["name"]; ok {
		fmt.Printf("存在 key → name:%s\n", name)
	} else {
		fmt.Println("key 不存在")
	}
	fmt.Println("原分支代碼")
}

if 語句中定義 name,ok 變量,使用 ok 判斷 key 是否存在,如果存在則執(zhí)行分支里的代碼。

switch

基本用法:

switch T {
case value1:
	// 分支 1
case value2, value3, ...:
	// 分支 2
...
default:
	// 默認分支
}

T 可以是常量、變量和布爾表達式等,case 關(guān)鍵字后面的 value 類型,必須與 T 的類型是一致的,且 value 是唯一的。Go 會根據(jù) T 的值與各個 case 后面的 value 進行匹配,匹配成功則執(zhí)行對應(yīng) case 分支,case 后面可以有多個 value。default 為默認分支,可有可無,如果前面的 case 都沒匹配上,則會執(zhí)行 default 分支。

示例

import "fmt"

func main() {
	name := "小明"
	if name == "小紅" {
		fmt.Println("您好,小紅!")
	} else if name == "小明" {
		fmt.Println("您好,小明!")
	} else {
		fmt.Println("您好,陌生人!")
	}
	fmt.Println("原分支代碼")
}

上面的代碼,可以使用 switch 分支改造:

import "fmt"

func main() {
	name := "小明"
	switch name {
	case "小明":
		fmt.Println("您好,小明!")
	case "小紅":
		fmt.Println("您好,小紅!")
	default:
		fmt.Println("您好,陌生人!")

	}
	fmt.Println("原分支代碼")
}

執(zhí)行結(jié)果:

您好,小明!
原分支代碼

name 等于 小明,與第一個 case 分支匹配成功,執(zhí)行這個分支的代碼,然后繼續(xù)執(zhí)行原分支的代碼。

switch 分支當(dāng) if 分支使用

當(dāng) switch 分支后面不帶常量、變量或布爾表達式等時,其效果與 if 分支類似。

import "fmt"

func main() {
	switch {
	case 1+1 != 2:
		fmt.Println("1 + 1 不等于 2")
	case 1+1 == 2:
		fmt.Println("1 + 1 等于 2")
	default:
		fmt.Println("0")

	}
	fmt.Println("原分支代碼")
}

當(dāng) switch 后面什么都沒有時,程序會根據(jù) case 后面布爾表達式的值進行分支的選擇。

在 switch 語句中聲明變量

if 一樣,我們也可以在 switch 語句中聲明變量,變量的作用域也只在 swtich 語句中,外部無法訪問這些變量。

import "fmt"

func main() {
	mp := map[string]string{"name": "cmy"}
	switch name := mp["name"]; name {
	case "cmy":
		fmt.Println("cmy")
	case "kk":
		fmt.Println("kk")
	default:
		fmt.Println("unknown")

	}
	fmt.Println("原分支代碼")
}

fallthrough

Go 語言中,不同于其他語言,switch 塊內(nèi),每個 case 無需聲明 break 來終止。如果我們想執(zhí)行多個 case 分支,可以使用 fallthrough 關(guān)鍵字來實現(xiàn)。

import "fmt"

func main() {
	mp := map[string]string{"name": "cmy"}
	switch name := mp["name"]; name {
	case "cmy":
		fmt.Println("cmy")
		fallthrough
	case "kk":
		fmt.Println("kk")
	default:
		fmt.Println("unknown")

	}
	fmt.Println("原分支代碼")
}

執(zhí)行結(jié)果:

cmy
kk
原分支代碼

在第一個 case 分支后面使用了 fallthrough,不論下一個 case 是否與 cmy 匹配,都會執(zhí)行這個分支的代碼。

小結(jié)

本文對兩種分支結(jié)構(gòu)(if、switch)進行了介紹,也舉例說明了一些特殊的用法。如果代碼存在著復(fù)雜的 if 多分支結(jié)構(gòu),不妨用 swtich 進行改造,也許代碼的可讀性會更高。

到此這篇關(guān)于一文帶你熟悉Go語言中的分支結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Go語言分支結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Go語言實現(xiàn)微信公眾平臺

    使用Go語言實現(xiàn)微信公眾平臺

    這篇文章主要介紹了使用Go語言實現(xiàn)微信公眾平臺,雖然不是全部代碼,但是也是給我們提供了一個非常好的思路,需要的朋友可以參考下
    2015-01-01
  • Go中time.RFC3339 時間格式化的實現(xiàn)

    Go中time.RFC3339 時間格式化的實現(xiàn)

    這篇文章主要介紹了Go中time.RFC3339 時間格式化的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Go語言快速入門圖文教程

    Go語言快速入門圖文教程

    Go是 Goolge 開發(fā)的一種靜態(tài)型、編譯型、并發(fā)型,并具有垃圾回收功能的語言,Go 語言上手非常容易,它的風(fēng)格類似于 C 語言,Go 語言號稱是互聯(lián)網(wǎng)時代的 C 語言,那么它到底有多火呢,一起看看吧
    2021-05-05
  • Go之集合slice的實現(xiàn)

    Go之集合slice的實現(xiàn)

    本文主要介紹了Go之集合slice的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • GoLand安裝與環(huán)境配置的完整步驟

    GoLand安裝與環(huán)境配置的完整步驟

    作為一個go語言程序員,覺得自己有義務(wù)為go新手開一條更簡單便捷的上手之路,下面這篇文章主要給大家介紹了關(guān)于GoLand安裝與環(huán)境配置的完整步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Go構(gòu)建高性能的命令行工具使例詳解

    Go構(gòu)建高性能的命令行工具使例詳解

    這篇文章主要為大家介紹了Go構(gòu)建高性能的命令行工具使例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 詳解Golang函數(shù)式選項(Functional?Options)模式

    詳解Golang函數(shù)式選項(Functional?Options)模式

    什么是函數(shù)式選項模式,為什么要這么寫,這個編程模式解決了什么問題呢?其實就是為了解決動態(tài)靈活的配置不同的參數(shù)的問題。下面通過本文給大家介紹Golang函數(shù)式選項(Functional?Options)模式的問題,感興趣的朋友一起看看吧
    2021-12-12
  • Golang實現(xiàn)單鏈表的示例代碼

    Golang實現(xiàn)單鏈表的示例代碼

    本文主要介紹了Golang實現(xiàn)單鏈表的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • go語言通過反射獲取和設(shè)置結(jié)構(gòu)體字段值的方法

    go語言通過反射獲取和設(shè)置結(jié)構(gòu)體字段值的方法

    這篇文章主要介紹了go語言通過反射獲取和設(shè)置結(jié)構(gòu)體字段值的方法,實例分析了Go語言反射的使用技巧,需要的朋友可以參考下
    2015-03-03
  • golang配置管理神器Viper使用教程

    golang配置管理神器Viper使用教程

    這篇文章主要為大家介紹了golang配置管理神器Viper使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04

最新評論

道孚县| 庆安县| 宜都市| 温泉县| 凤城市| 南岸区| 永平县| 安乡县| 万荣县| 克什克腾旗| 三门峡市| 石狮市| 宁河县| 扶风县| 屯昌县| 息烽县| 莱州市| 仪陇县| 浮梁县| 沁阳市| 竹山县| 冷水江市| 兴业县| 观塘区| 东莞市| 樟树市| 洛扎县| 西乌| 商丘市| 泽普县| 英山县| 新乡县| 大宁县| 韶山市| 彩票| 揭西县| 盘锦市| 桂阳县| 金华市| 潼南县| 宣汉县|