流程控制
// part1 if condition { } // part2 if condition { } else { } // part3 if condition1 { } else if condition2 { } else if condition3 { } else { }
go里面的switch不需要break,即使不加break执行当前语句后也不会往下执行
switch var { case var1: case var2: case var3: default: } // eg: var a int = 10 switch a { case 0: fmt.Println("a is equals 0") case 1: fmt.Println("a is equals 1") default: fmt.Println("a isn't equals 0 and 1") }
如果在执行某个case里面的语句后,想继续执行下一个case的语句,可以使用fallthrough
switch a { case 0: fmt.Println("aaaa") fallthrough case 1: fmt.Println("bbb") default: fmt.Println("ccc") }
switch a { case 0, 1, 2, 3, 4, 5: fmt.Println("aa") default: fmt.Println("bb") }
var i = 0 switch { case i > 0 && i < 10: fmt.Println("i > 0 and i < 10") case i > 10 && i < 20: fmt.Println("i > 10 and i < 20") default: fmt.Println("def") }
switch i := 0; { case i > 0 && i < 10: fmt.Println("i > 0 and i < 10") case i > 10 && i < 20: fmt.Println("i > 10 and i < 20") default: fmt.Println("def") }
// 写法 for 初始化语句; 条件判断; 变量修改 { }
for i := 0; i < 100; i++ { fmt.Println("i=%d\n", i) }
for 条件 { } // eg for i > 0 { fmt.Println("i > 0") } for true { fmt.Println("i > 0") } for { fmt.Println("i > 0") }
str := "hello world" // i位数字下标 // v是对应的值 for i, v := range str { fmt.Println(i, v) }
用户可以定义label,然后可以使用goto或者continue等语句跟上这个label去跳转到相应的位置
// continue & label LABEL1: for i := 0l i < 10; i++ { for j := 0; j < 10; j++ { if j == 4 { continue LABEL1 } } } // goto & label i := 0 HERE: i++ if i == 5 { return } goto HERE