if else(分支结构)
Go语言中最常用的流程控制有if
和for
,而switch
和goto
主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制
else if
和else
都是可选的
func ifDemo1() { score := 65 if score >= 90 { fmt.Println("A") } else if score > 75 { fmt.Println("B") } else { fmt.Println("C") } }
特殊写法
func ifDemo2() { if score := 65; score >= 90 { // score是属于if内部的局部变量,在if外面调用时会报错 fmt.Println("A") } else if score > 75 { fmt.Println("B") } else { fmt.Println("C") }
fmt.Println(score) // undefined: score }
for(循环结构)
初始语句 -> 条件表达式 -> 循环体语句 -> 结束语句
for 初始语句;条件表达式;结束语句{ 循环体语句 }
条件表达式返回true
时循环体不停地进行循环,直到条件表达式返回false
时自动退出循环。
func forDemo() { for i := 0; i < 10; i++ { fmt.Println(i) } }
初始语句可以被忽略
func forDemo2() { i := 0 for ; i < 10; i++ { fmt.Println(i) } }
初始语句和结束语句都可以省略
func forDemo3() { i := 0 for i < 10 { fmt.Println(i) i++ } }
无限循环, 可以通过break
、goto
、return
、panic
语句强制退出循环。
for { 循环体语句 }
for range
- 数组、切片、字符串返回索引和值。
- map返回键和值。
- 通道(channel)只返回通道内的值。
s := "hello你好" for index,value := range s{ fmt.Printf("%d %c ",index,value) // 0 h 1 e 2 l 3 l 4 o 5 你 8 好 }
--- 君子处其实,不处其华;治其内,不治其外 张居正 ----