行业知识
GO流程控制
1. if else
在Go语言中,关键字if是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号{}括起来的代码块,否则就忽略该代码块继续执行后续的代码。
()if condition { // 条件为真执行} () condition 称之为条件表达式或者布尔表达式,执行结果需返回true或false。{ 必须在条件表达式的尾部
x := 0if x 0 { n-- fmt.Println(n)} 我们来看下面一种写法:
step := 2//初值可以省略,但是;必须有,但是这样写step的作用域就比较大了,脱离了for循环for ; step > 0; step-- { fmt.Println(step)} 进一步简化代码,将 if 判断整合到 for 中,变为下面的代码:
step := 2for step > 0 { step-- fmt.Println(step)} 结束循环的方法:break,return,goto,panic
其中,return和panic不会执行循环之后的语句,break会继续执行
3. for range
for range 结构是Go语言特有的一种的迭代结构,for range 可以遍历数组、切片、字符串、map 及管道(channel)
for key, val := range coll { ...} val 始终为集合中对应索引的值拷贝,因此它一般只具有只读性质,对它所做的任何修改都不会影响到集合中原有的值
str := "你好呀"for k, v := range str {fmt.Println(k, string(v))} 通过 for range 遍历的返回值有一定的规律:
- 数组、切片、字符串返回索引和值。
- map 返回键和值。
- channel只返回管道内的值。
以下和c无太大区别
4. switch
go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 那么如何做到执行完一个case之后,进入下一个case而不是跳出swtich呢?
答案是:fallthrough
var s = "hello"switch {case s == "hello": fmt.Println("hello") fallthroughcase s != "world": fmt.Println("world")}5. goto
goto 语句通过标签进行代码间的无条件跳转
使用 goto 退出多层循环
使用 goto 集中处理错误
6. break
break 语句可以结束 for、switch 和 select 的代码块,另外 break 语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的 for、switch 和 select 的代码块上。
func main() {OverLoop:for i := 0; i7. continue
continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用,在 continue 语句后添加标签时,表示开始标签对应的循环
package mainimport "fmt"func main() {OuterLoop: for i := 0; i