在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. if-elsecondition 不需要用 () 括起来; 关键字 if 和 else 之后的左大括号 只存在单个分支时: // { 必须和 if 在同一行 if condition { // do something } 存在两个分支时: // { 必须和 if 在同一行 if condition { // do something } else { // { 必须和 else 在同一行 // do something } 存在两个以上的分支时: // { 必须和 if 在同一行 if condition { // do something } else if condition2{ // { 必须和 else if 在同一行 // do something } else { // { 必须和 else 在同一行 // do something } 存在较多的分支时,建议使用 swaitch 结构,这样可读性更好 1.1 if 包含一个初始化语句if 后跟一个初始化语句,然后跟分号 ' ; ',然后跟条件表达式 if cc := 12;cc > 10 { fmt.Println("cc is > 10",cc) } 通过函数返回值为初始化变量赋值 func controlIf(condition int) { if cc := add(13);cc > 10 { fmt.Println("cc is > 13",cc) } } func add(i int)(result int) { return i+1 }
2. swaitch相比于Java,switch 更加灵活,它可以接收任意形式的表达式,一般结构为 switch var { case var1: ... case var2: ...default: ... } 1. var、var1、var2 可以使同类型的任意值,或者最终结果为相同类型的表达式; 2. switch 关键字必须和 { 在同一行; 3. 当匹配到某个case分之后,执行完相应的代码后自动退出 switch 结构,不需要使用 break 来退出switch 结构; 4. 执行完匹配的分支后,若要继续执行下面的分支,可以在匹配的分支后添加 fallthrough 关键字实现; 5. var1、var2 这些变量可以替换为表达式; // condition = 2 func controlSwitch(condition int) { condition =2 switch condition { // controlSwitch: 2 case 1: fmt.Println("controlSwitch:",condition) case 2: fmt.Println("controlSwitch:",condition) default: fmt.Println("controlSwitch:",condition) } switch condition { /** fallthrough controlSwitch: 2 fallthrough controlSwitch: 3 fallthrough controlSwitch: default */ case 2: fmt.Println("fallthrough controlSwitch:",2) fallthrough case 3: fmt.Println("fallthrough controlSwitch:",3) fallthrough default: fmt.Println("fallthrough controlSwitch:","default") } cc :=2 switch condition/2 { // controlSwitch: cc/2 case cc/2: fmt.Println("controlSwitch:","cc/2") case 2: fmt.Println("controlSwitch:",2) default: fmt.Println("controlSwitch:","default") } } 3. for3.1 基于计数器的迭代func controlFor(condition int) { for i :=0;i<condition ; i++ { fmt.Println("controlFor:",i) } } 变量 i 的生命周期在循环完成后就已经结束,下次循环时还可以继续使用变量i 3.2 基于条件判断的迭代类似于 while 循环 var x = 5 for x > 0{ x-- } 3.3 无限循环三种形式效果一样 for { fmt.Println(123) } for ; ; { fmt.Println(123) } for true { fmt.Println(123) } 3.4 for-range类似于 Java 的 foreach,但是该结构可以直接获取到当前遍历元素的下标,并且不用显示指定 遍历元素的类型 var array [5]int for key, value := range array { fmt.Println(key,value) } /** 输出 0 0 1 0 2 0 3 0 4 0 */ 4. break、continue4.1 break一个 break 的作用范围为该语句出现后的最内部的结构,它可以被用于任何形式的 for 循环(计数器、条件判断等)。但在 switch 或 select 语句中,break 语句的作用结果是跳过整个代码块,执行后续的代码。 4.2 continuecontinue 忽略剩余的循环体而直接进入下一次循环的过程,但不是无条件执行下一次循环,执行之前依旧需要满足循环的判断条件 |
请发表评论