本文共 3287 字,大约阅读时间需要 10 分钟。
程序默认自上到下执行,中间不会跳转。
Golang中采用合法的前向引用,变量必须先定义后使用(部分语言中 支持 先试用 后定义,程序执行过程会自动优化)
if支持单分支、双分支和多分支控制语法如下
基本语法
if 条件表达式1 { 执行代码块1}else if 条件表达式2{ 执行代码块2}....else{ 执行代码块3}
当条件表达式1为 true时就就执行代码块1, 否则 判断 条件表达式2,如果为true 则执行代码块2 ,如果之前的表达式都为false,则执行代码块3
示例程序
func test6(){ var age int fmt.Println("请输入年龄:") fmt.Scanln(&age) if(age>18){ fmt.Println("你是成年人") }else if(age>0){ fmt.Println("你是未成年人") }else{ fmt.Println("年龄不合法") }}
基本语法
switch 表达式{ case 表达式1,表达式2...: 代码块1 case 表达式3,表达式4...: 代码块2 ... default: 代码块n }
go中switch case 语句块中不用加 break,且 case 后的表达式可以有多个 用逗号分隔
示例代码
func test7(){ var age int fmt.Println("请输入年龄:") fmt.Scanln(&age) switch age { case 1,2,3,4,5,6: fmt.Println("你是儿童") case 7,8,9,10,11,12,13,14: fmt.Println("你是少年") default: fmt.Println("你长大了") } switch { case 0<age && age<=7: fmt.Println("你是儿童") case 7<age && age<=14: fmt.Println("你是少年") default: fmt.Println("你长大了") } switch nage := age; { case 0<nage && nage<=7: fmt.Println("你是儿童") //fallthrough switch 穿透 case 7<nage && nage<=14: fmt.Println("你是少年") default: fmt.Println("你长大了") } 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") default: fmt.Printf("x的类型是 未知类型") } }
注意点
总结
如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型 建议使用switch,简介高效
其他情况:区间判断、结果为bool类型判断,使用if ,if 使用范围更广
基本语法
for 循环变量初始化;循环条件;循环变量迭代{ 循环操作(语句)}for ; ; { //无限循环 通常配合break语句使用 //操作语句}for { //无限循环 通常配合break语句使用 //操作语句}for index,val := range str{ //操作语句}
代码示例
func test8(){ for i := 1;i < 10;i++{ fmt.Println("结果:",i) } fmt.Println("=====================") var c int =1; for { fmt.Println("结果:",c) c++ if(c>10){ break } } fmt.Println("=====================") var str string = "我爱北京天安门" for i :=0 ; i<len(str); i++ { fmt.Printf("%c \n",str[i]) } fmt.Println("=====================") for index,val := range str { fmt.Printf("index =%d ,val=%c \n",index,val) }}
Go语言没有while 和 do while 语法,可以使用for来实现同样的效果
代码示例
func test9(){ // ---------do while 效果实现 var c int =1 for { fmt.Println("结果:",c) c++ if(c>10){ break } } // while 效果实现 for { if(c>10){ break } fmt.Println("结果:",c) c++ }}
Break
break用于中止某个语句块的执行,用于中断当前for循环或 switch语句
continue
用于结束本次循环,直接开始下一次循环
多层循环嵌套时可以通过标签 指定跳过哪一层的循环
goto
return
用于跳出所在的方法或函数
示例代码
func test10(){ outf://增加标签 for i := 0;i<5;i++ { inf: for j :=0; j<5; j++ { fmt.Println("i=",i,",j=",j); if i == 1 && j == 2{ break inf //结束内存循环 外层循环继续执行 外层继续i =2 的循环 } if i==3 { continue outf } if i == 5 && j == 2{ // 输出 5 2 后外层循环中止,后续不在有输出 break outf //结束内存循环 } } }
转载地址:http://exfwz.baihongyu.com/