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

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

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

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

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

if

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

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

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

單分支 if

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

import "fmt"

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

打印結(jié)果

num 大于 2
原分支代碼

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

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)鍵字實(shí)現(xiàn)。如果表達(dá)式為 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,因此會(huì)執(zhí)行第一個(gè)分支的里打印語句,然后繼續(xù)執(zhí)行原分支的打印語句。

多分支 if - else if - else

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

import "fmt"

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

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

您好,小明!
原分支代碼

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

在 if 語句中聲明變量

if 語句中,布爾表達(dá)式之前聲明變量是 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:
	// 默認(rèn)分支
}

T 可以是常量、變量和布爾表達(dá)式等,case 關(guān)鍵字后面的 value 類型,必須與 T 的類型是一致的,且 value 是唯一的。Go 會(huì)根據(jù) T 的值與各個(gè) case 后面的 value 進(jìn)行匹配,匹配成功則執(zhí)行對(duì)應(yīng) case 分支,case 后面可以有多個(gè) value。default 為默認(rèn)分支,可有可無,如果前面的 case 都沒匹配上,則會(huì)執(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 等于 小明,與第一個(gè) case 分支匹配成功,執(zhí)行這個(gè)分支的代碼,然后繼續(xù)執(zhí)行原分支的代碼。

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

當(dāng) switch 分支后面不帶常量、變量或布爾表達(dá)式等時(shí),其效果與 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 后面什么都沒有時(shí),程序會(huì)根據(jù) case 后面布爾表達(dá)式的值進(jìn)行分支的選擇。

在 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),每個(gè) case 無需聲明 break 來終止。如果我們想執(zhí)行多個(gè) case 分支,可以使用 fallthrough 關(guān)鍵字來實(shí)現(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
原分支代碼

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

小結(jié)

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

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

相關(guān)文章

  • 解決電腦用GoLand太卡將VsCode定制成Go IDE步驟過程

    解決電腦用GoLand太卡將VsCode定制成Go IDE步驟過程

    這篇文章主要為大家介紹了解決電腦用GoLand太卡,將VsCode定制成Go IDE步驟過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 解析golang中的并發(fā)安全和鎖問題

    解析golang中的并發(fā)安全和鎖問題

    本文我們來學(xué)習(xí)一下golang中的并發(fā)安全和鎖問題,文章通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • Go中的fuzz模糊測(cè)試使用實(shí)戰(zhàn)詳解

    Go中的fuzz模糊測(cè)試使用實(shí)戰(zhàn)詳解

    這篇文章主要為大家介紹了Go中的fuzz模糊測(cè)試使用實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go常用技能日志log包創(chuàng)建使用示例

    Go常用技能日志log包創(chuàng)建使用示例

    這篇文章主要為大家介紹了Go常用技能日志log包創(chuàng)建使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Golang TCP粘包拆包問題的解決方法

    Golang TCP粘包拆包問題的解決方法

    這篇文章主要給大家介紹了Golang TCP粘包拆包問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Golang具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Go高效率開發(fā)Web參數(shù)校驗(yàn)三種方式實(shí)例

    Go高效率開發(fā)Web參數(shù)校驗(yàn)三種方式實(shí)例

    這篇文章主要介紹了Go高效率開發(fā)Web參數(shù)校驗(yàn)三種方式實(shí)例,需要的朋友可以參考下
    2022-11-11
  • golang執(zhí)行命令操作 exec.Command

    golang執(zhí)行命令操作 exec.Command

    這篇文章主要介紹了golang執(zhí)行命令操作 exec.Command,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 詳解Go語言中net/http包的使用

    詳解Go語言中net/http包的使用

    Go語言內(nèi)置的?net/http?包十分的優(yōu)秀,提供了HTTP客戶端和服務(wù)端的實(shí)現(xiàn),本文主要就來和大家聊聊net/http包的使用,感興趣的可以了解一下
    2023-07-07
  • 淺談Golang 切片(slice)擴(kuò)容機(jī)制的原理

    淺談Golang 切片(slice)擴(kuò)容機(jī)制的原理

    我們知道 Golang 切片在容量不足的情況下會(huì)進(jìn)行擴(kuò)容,擴(kuò)容的原理是怎樣的呢,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Go用兩個(gè)協(xié)程交替打印100以內(nèi)的奇偶數(shù)的方法詳解

    Go用兩個(gè)協(xié)程交替打印100以內(nèi)的奇偶數(shù)的方法詳解

    這篇文章主要給大家詳細(xì)介紹了Go用兩個(gè)協(xié)程交替打印100以內(nèi)的奇偶數(shù)的示例代碼,文中給大家介紹了兩個(gè)實(shí)現(xiàn)方法,使用無緩沖的channel和設(shè)置GOMAXPROCS=1,介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08

最新評(píng)論