【if】
if 是用于测试某个条件的语句,如果该条件(逻辑型或布尔型)成立,则会执行大括号内的代码,第一个大括号必须和if 或者else同行,否则非法
1 // 方式1 2 if condition { 3 //do something 4 } 5 // 方式2 6 if condition { 7 // do something 8 }else{ 9 // do something 10 } 11 // 方式3 12 if condition1 { 13 // do something 14 } else if condition2 { 15 // do something else 16 } else { 17 // default 18 } 19 // 方式4 20 if initialization; condition{ 21 // do something 22 } 23 if _,ok := f1();ok{ 24 f2() 25 }
else-if 的嵌套不受次数限制,若有多个,建议将可能性大的放在前面
在方式4中的初始化语句中,建议声明变量,避免变量作用域带来的问题
【switch】
1 // 方式1 变量值的匹配 2 switch var1 { 3 case val1: 4 ... 5 case val2: 6 ... 7 default: 8 ... 9 } 10 switch i{ 11 case 10: 12 f1() 13 case 20: 14 f2() 15 defaul: 16 f3() 17 } 18 19 // 方式2 变量判断类似if 20 switch { 21 case condition1: 22 ... 23 case condition2: 24 ... 25 default: 26 ... 27 } 28 switch{ 29 case i<10: 30 f1() 31 case i>10: 32 f2() 33 defalt: 34 f3() 35 } 36 // 方式3 包含变量声明初始化 37 switch initialization { 38 case val1: 39 ... 40 case val2: 41 ... 42 default: 43 ... 44 } 45 switch result := calculate();{ 46 case result > 0: 47 f1() 48 case result < 0: 49 f2() 50 default: 51 f3() 52 }
备注:
Go中的switch不需要break来跳出,自动会跳出控制,如果想不跳出控制的话,就在case后面添加fallthrough,这样就会自动执行这个case后面的case【case i>0:fallthrough】
【for】
1 //for 初始化语句;条件语句;修饰语句{} 2 for i := 0;i < 10; i++{ 3 fmt.Println(i) 4 } 5 // for 条件语句{} 6 i := 0 7 for i<100{ 8 fmt.Println(i) 9 i++ 10 } 11 // for ix,val := range coll{} 12 for key,val := range str{ 13 fmt.Printf("index: %d value: %s",key,val) 14 }
【标签与goto】(在程序设计中不建议使用,这个在C中被诟病很久,但是Go语言的设计者为什么...)
标签的名称大小写敏感,为了提高可读性,建议使用大写字母
1 page main 2 3 func main(){ 4 i := 0 5 HERE: 6 fmt.Println(i) 7 i++ 8 if i == 5{ 9 return 10 } 11 goto HERE 12 }
标签定义了要使用,和变量是一样的,这是Go语言的原则之一,程序中不允许出现不使用的代码。
学习参考处:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md