一文帶你熟悉Go語言中的分支結(jié)構
分支結(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
多分支需要在 if
和 else
的形式上,加上 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é)構(if
、switch
)進行了介紹,也舉例說明了一些特殊的用法。如果代碼存在著復雜的 if
多分支結(jié)構,不妨用 swtich
進行改造,也許代碼的可讀性會更高。
到此這篇關于一文帶你熟悉Go語言中的分支結(jié)構的文章就介紹到這了,更多相關Go語言分支結(jié)構內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決電腦用GoLand太卡將VsCode定制成Go IDE步驟過程
這篇文章主要為大家介紹了解決電腦用GoLand太卡,將VsCode定制成Go IDE步驟過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11golang執(zhí)行命令操作 exec.Command
這篇文章主要介紹了golang執(zhí)行命令操作 exec.Command,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的方法詳解
這篇文章主要給大家詳細介紹了Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的示例代碼,文中給大家介紹了兩個實現(xiàn)方法,使用無緩沖的channel和設置GOMAXPROCS=1,介紹的非常詳細,需要的朋友可以參考下2023-08-08