Go 结构化编程 条件和循环

网友投稿 857 2022-11-30

Go 结构化编程 条件和循环

Go 结构化编程 条件和循环

循环

与其他主要编程语⾔的差异

Go 语⾔仅⽀持循环关键字 for(go语言的关键字非常的少,和c的37个,c++的84个相比只有25个关键字,所以 go语言的循环只支持for关键字 )

for  j := 7 ; j <= 9 ; j ++

n := 0 for n < 5 { fmt.Println(n) n ++ }

if 条件

condition是一个布尔表达式

if condition { // code to be executed if condition is true} else { // code to be executed if condition is false}if condition-1 { // code to be executed if condition-1 is true} else if condition-2 { // code to be executed if condition-2 is true} else { // code to be executed if both condition1 and condition2 are false}

与其他主要编程语⾔的差异

condition 表达式结果必须为布尔值  ⽀持变量赋值:

if var declaration; condition { // code to be executed if condition is true}

这里有函数的多返回值,这里可以给到变量,通过变量结果来做判断

a := func(x,y int)int { return x + y } if b := a(1,6) > 5;b{ fmt.Println("yes") } else{ println("no") }

优化一下,一般调用某个方法的时候,第一个变量v是本身方法的返回值,第二个是返回的错误,如果没有错误执行什么样的操作,有错误执行什么样的操作。

a := func(x,y int) (int,error) { if x < 0 || y < 0 { return 0,errors.New("a <0 || b < 0") } return x + y,nil } if v,err := a(1,6); err == nil { fmt.Println(v) } else{ println(err) }

switch 条件

与其他主要编程语⾔的差异

1. 条件表达式 不限制为常量或者整数

2. 单个 case 中, 可以出现多个结果选项, 使⽤逗号分隔; (case当中可以放多个元素,当命中其中任何一个时候)

3. 与 C 语⾔等规则相反, Go 语⾔不需要⽤break来明确退出⼀个 case ;(不需要添加break,在一个case被命中之后自动的退出,中断这个结果)

4. 可以不设定 switch 之后的条件表达式,在此种情况下,整个switch结构与多个 if…else… 的逻辑作⽤等同

for i:=0;i<=5;i++{ switch i { case 0,2 : fmt.Println(i,"Even") case 1,3: fmt.Println(i,"Odd") default: fmt.Println(i,"it not 0-3") } }0 Even1 Odd2 Even3 Odd4 it not 0-35 it not 0-3

如果把switch语句当成连续的if else,那么可以通过switch简化复杂连续的if else。

注意⚠️switch i,这个时候就不需要在switch之后加变量i了,可以在case后面做判断表达。

for i:=0;i<=5;i++{ switch { case i%2 == 0 : fmt.Println(i,"Even") case i%2 == 1 : fmt.Println(i,"Odd") default: fmt.Println(i,"unknow") } }

if 条件语句比较适合分支较少的情况,如果有很多分支的话,选择 switch 会更方便,比如以上示例,使用 switch 改造后的代码如下:

switch i:=6;{case i>10: fmt.Println("i>10")case i>5 && i<=10: fmt.Println("5

switch 语句同样也可以用一个简单的语句来做初始化,同样也是用分号 ; 分隔。每一个 case 就是一个分支,分支条件为 true 该分支才会执行,而且 case 分支后的条件表达式也不用小括号 () 包裹。

在 Go 语言中,switch 的 case 从上到下逐一进行判断,一旦满足条件,立即执行对应的分支并返回,其余分支不再做判断。也就是说 Go 语言的 switch 在默认情况下,case 最后自带 break。这和其他编程语言不一样,比如 C 语言在 case 分支里必须要有明确的 break 才能退出一个 case。Go 语言的这种设计就是为了防止忘记写 break 时,下一个 case 被执行。

switch j:=1;j {case 1: fallthroughcase 2: fmt.Println("1")default: fmt.Println("没有匹配")}

当 switch 之后有表达式时,case 后的值就要和这个表达式的结果类型相同,比如这里的 j 是 int 类型,那么 case 后就只能使用 int 类型,如示例中的 case 1、case 2。如果是其他类型,比如使用 case "a" ,会提示类型不匹配,无法编译通过。

而对于 switch 后省略表达式的情况,整个 switch 结构就和 if……else 条件语句等同了。

switch 后的表达式也没有太多限制,是一个合法的表达式即可,也不用一定要求是常量或者整数。你甚至可以像如下代码一样,直接把比较表达式放在 switch 之后。

switch 2>1 {case true: fmt.Println("2>1")case false: fmt.Println("2<=1")}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:解决@Validated注解无效,嵌套对象属性的@NotBlank无效问题
下一篇:Kubernetes pgsql使用本地 Local PV
相关文章

 发表评论

暂时没有评论,来抢沙发吧~