Go 条件与循环 电脑版发表于:2020/8/30 16:49 ![go数据类型](https://img.tnblog.net/arcimg/hb/0dd243ae49394f12beed84237bfee1a3.jpg "go数据类型") >#Go 条件与循环 [TOC] 循环 ------------ >###与其他主要编程语言的差异 <br/> tn>Go 语言仅支持循环关键字 for。可以从以下代码看出,循环时并没有小括号 ```bash for j := 7;j <= 9; j++ ``` >###代码示例 <br/> >while 条件循环 ```go n := 0 /* while(n<5) */ for n < 5 { t.Log(n) n++ } ``` ![](https://img.tnblog.net/arcimg/hb/3fd8ba9969f0465b95de59a999efb080.png) >无限循环 ```go /*while(true)*/ n := 0 for { ... } ``` >###if 条件 tn>与其他语言差别不大(这里condition结果为bool值) ```go if condition-1 { } else if condition-2{ } else{ } ``` tn>举例 ```go func TestIfMultiSec(t *testing.T) { if a := 1 == 1; a { t.Log("1==1") } } ``` ![](https://img.tnblog.net/arcimg/hb/358a3f8f63654a499f00a2625db6c8b4.png) tn>与其他主要编程语言的差异 1. 支持变量赋值: ```go if var declaration; condition{ ...... } ``` tn>举例 ```go func TestIfMultiSec(t *testing.T) { if v,err := someFun(); err==nil{ t.Log("1==1") }else{ t.Log("1==1") } } ``` >###switch 条件 ```go func TestSwitchMultiCase(t *testing.T) { for i := 0; i < 5; i++ { switch i { case 0, 2: t.Log("Event") case 1, 3: t.Log("Odd") default: t.Log("it is not 0-3") } } } ``` 也可以这样写 ```go func TestSwitchCaseCondition(t *testing.T) { for i := 0; i < 5; i++ { switch { case i%2 == 0: t.Log("Event") case i%2 == 1: t.Log("Odd") default: t.Log("unknow") } } } ``` tn>结果 ![](https://img.tnblog.net/arcimg/hb/b4b8c8c228554a6ea624720acd7221f1.png) 在 case 中写 `fallthrough` 函数可以执行到下一个case大家可以自行测试