go的循环中,可以使用return。结束当前循环的执行
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { fmt.Println("11111") fmt.Println("22222") fmt.Println("33333") return fmt.Println("44444") fmt.Println("55555") fmt.Println("66666") }
#### if #####
分支控制:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { var age int fmt.Println("请输入年龄:") fmt.Scanln(&age) if age > 18 { fmt.Println("年龄大于18岁") } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { var age int fmt.Println("请输入年龄:") fmt.Scanln(&age) if age > 18 { fmt.Println("年龄大于18岁") } else { fmt.Println("年龄小于18岁") } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { var age int fmt.Println("请输入年龄:") fmt.Scanln(&age) if age > 60 { fmt.Println("年龄大于60岁") } else if age < 60 && age > 30 { fmt.Println("年龄30-60岁之间") } else { fmt.Println("年龄小于30岁") } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
在一个分支中,嵌套另一个分支 if 条件表达式 { if 条件表达式 { XXX } else { XXX } }
#### switch #####
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { var name string fmt.Println("请输入名字:") fmt.Scanln(&name) switch name { case "jack": fmt.Println("我是jack") case "tom": fmt.Println("我是tom") default: fmt.Println("输入不对") } }
switch / case后,可以是常量,变量,一个有返回值的函数
switch / case后,各个表达式的数据类型必须一致
case后,可以带多个表达式,使用逗号分隔
case后的表达式如果是常量,则要求不能重复
case后不需要带break,当程序匹配成功后,会执行对应的代码,之后退出switch,如果匹配不到,执行default
default,不是必须有的
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { var score int = 90 switch { case score > 90: fmt.Println("成绩优秀") case 70 <= score && score <= 90 : fmt.Println("成绩优良") case 60 <= score && score <= 70 : fmt.Println("成绩及格") } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { switch score := 90; { case score > 90: fmt.Println("成绩优秀") case 70 <= score && score <= 90 : fmt.Println("成绩优良") case 60 <= score && score <= 70 : fmt.Println("成绩及格") } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { var num int = 10 switch num { case 10: fmt.Println("11111") fallthrough case 20: fmt.Println("22222") fallthrough case 30: fmt.Println("33333") case 40: fmt.Println("44444") } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// 判断某个interface变量中实际指向的变量类型 package main import "fmt" func main() { var x interface{} var y = 10.0 x = y switch i := x.(type) { case nil: fmt.Printf("x的类型:%T",i) case int: fmt.Printf("x是int型") case float64: fmt.Printf("x是float64型") case func(int) float64: fmt.Printf("x是func(int)型") case bool,string: fmt.Printf("x是bool或string型") default: fmt.Printf("未知型") } }
#### for #####
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { for i := 1;i <= 10;i++ { fmt.Println("你好i",i) } j := 1 for j <= 10 { fmt.Println("你好j",j) j++ } k := 1 for { if k <= 10 { fmt.Println("你好k",k) } else { break } k++ } }
// for 循环有中文的字符串
package main import "fmt" func main() { var str string = "abcdefg你好" str2 := []rune(str) for i := 0;i< len(str2);i++ { fmt.Printf("%c ",str2[i]) } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { lable2: for i := 0;i<5;i++ { for j:=0;j<5;j++ { if j == 2 { break lable2 // break } fmt.Println("j=",j) } } } // break时,依据标签,终止 最外层for 循环的执行
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { lable2: for i := 0;i<5;i++ { for j:=0;j<5;j++ { if j == 2 { continue lable2 // continue } fmt.Println("j=",j) } } } // continue时,跳转到 最外层for 循环处执行
指定跳转到某一行,不推荐使用
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package main import "fmt" func main() { fmt.Println("11111") fmt.Println("22222") goto label1 fmt.Println("33333") fmt.Println("44444") label1: fmt.Println("55555") fmt.Println("66666") }