欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

分支結(jié)構

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

if

if 語句是 Go 中最常用、最簡單的分支控制結(jié)構,它分為單分支、雙分支以及多分支三種用法。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é)構,if 配合 else 關鍵字實現(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 關鍵字后面的 value 類型,必須與 T 的類型是一致的,且 value 是唯一的。Go 會根據(jù) T 的值與各個 case 后面的 value 進行匹配,匹配成功則執(zhí)行對應 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 分支當 if 分支使用

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("原分支代碼")
}

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 關鍵字來實現(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é)構(ifswitch)進行了介紹,也舉例說明了一些特殊的用法。如果代碼存在著復雜的 if 多分支結(jié)構,不妨用 swtich 進行改造,也許代碼的可讀性會更高。

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

相關文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    淺談Golang 切片(slice)擴容機制的原理

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

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

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

最新評論