流程控制介绍
1.顺序控制
没有任何跳转语句,按顺序执行
2.分支控制
golang支持在if中直接定义一个变量:
上面图片中有一处错误,else必须写在上一行,紧凑着第二个大括号:}
下面的代码才是正确写法:
if i<9{
fmt.Println("ok...")
}else{
fmt.Println("no...")
}
所以:
if后面的条件最好使用括号。
从上往下执行,一旦有一条满足条件,只会执行那一条,接下来就算满足条件也不会再执行了。
上图分析:如果是在c/c++或者其他一些编程语言当中,可以通过编译,将false赋值给b,然后b就为false。
但在go中,if后面只能是条件语句或者定义一个变量+条件语句
嵌套分支
switch分支控制
golang的case后的表达式可以有多个,使用逗号隔开。
程序执行哇case语句块后自动退出Switch,所以不需要在每个case语句最后加break。
switch细节:
但是这个case 5改成case n1就不会报错,将常量改成变量,就可以与前面的重复。
7):
8):
9):
如果case 10满足并执行后,直接穿透下一层case 20,也就是说虽然num不等于20,但case 20语句依旧可以执行,不需要判断是否符合条件,只能穿透一层。如果case 20后面再加一个穿透,那么case 30也会执行。
这个穿透了解就好,平常不建议使用。
interface:接口
3.循环控制
for循环,for后面不能加括号
func main(){
for i:=1;i<=10;i++ {
fmt.Println("3")
}
}
golang提供for_range的方式,可以方便遍历字符串和数组。
index的值是每个字符对应的位置下标,类似于数组。要是不想要index,可以用下划线代替,如下面代码:
func main(){
var str string="hello"
for _,val:=range str {
fmt.Printf("%c",val)
}
}
处理办法:利用rune切片
str2的数据类型不能string,否则报错。
但对于for-range的方式来遍历字符串的话,字符串中有中文也是可以照常输出的。
go语言中没有while和do…while,可以用for来实现其效果。
模拟while:
模拟do…while:
多重循环控制
利用多重循环打印金字塔
package main
import (
"fmt"
)
func main(){
var n int;
fmt.Scanf("%d",&n)
for i:=1;i<=n;i++ {
for k:=1;k<=n-i;k++ {
fmt.Print(" ")
}
for j:=1;j<=2*i-1;j++ {
fmt.Print("*")
}
fmt.Println()
}
}
打印九九乘法表
package main
import (
"fmt"
)
func main(){
for i:=1;i<=9;i++{
for j:=1;j<=i;j++{
fmt.Printf("%d*%d=%d \t",j,i,j*i)
}
fmt.Println()
}
}