前言
流程控制顾名思义就是 控制程序执行流程的语句 for循环、if else判断
一、if分支
package main
import (
"fmt"
)
//if 条件判断
func main() {
age := 19
//if else 两个判断分支
if age > 18 {
fmt.Println("澳门首家线上赌场开业啦")
} else {
fmt.Println("该写暑假作业了")
}
//多个判断分支
if age > 35 {
fmt.Println("人到中年")
} else if age > 18 || age < 100 {
fmt.Println("青年")
} else {
fmt.Println("好好学习")
}
//多个判断条件
var name = "张根"
if name == "张根" && age == 19 {
fmt.Println("你永远18岁")
}
//for循环
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
if 条件循环语句 声明变量
Go的if条件分支里也可以声明变量,但是该变量只能在 if分支的作用域使用,这样也起到了节省内存的作用。
package main
import (
"fmt"
)
//if 条件判断开辟作用域
func main() {
if age := 19; age > 18 {
fmt.Println("已经成年")
}
fmt.Println(age) //这里无法引用到age变量因为在if中声明的变量只能在if分支的作用域使用
}
switch语句
使用switch语句简化 多个if条件判断
package main
import (
"fmt"
)
//switch:简化大量的if分支
func main() {
var n = 1
if n == 1 {
fmt.Println("大拇指")
} else if n == 2 {
fmt.Println("食指")
} else if n == 3 {
fmt.Println("中指")
} else if n == 4 {
fmt.Println("无名指")
} else if n == 5 {
fmt.Println("小拇指")
} else {
fmt.Println("无效的输入")
}
//使用 switch简化以上代码
switch n = 3; n {
case 1:
fmt.Println("小拇指")
case 2:
fmt.Println("无名指")
case 3:
fmt.Println("中指")
case 4:
fmt.Println("事指")
case 5:
fmt.Println("大拇指")
default: //默认分支
fmt.Println("无效的输入")
}
//switch 中判断 奇数 偶数
switch n := 8; n {
case 1, 3, 5, 7, 9:
fmt.Println("奇数")
case 2, 4, 6, 8, 10:
fmt.Println("偶数")
default:
fmt.Println("无效的数字")
}
//case 分支使用表示式
age := 19
switch {
case age < 25:
fmt.Println("好好学习")
case age > 25 && age < 35:
fmt.Println("好好工作吧")
case age > 35 && age < 60:
fmt.Println("好好享受生活把")
default:
fmt.Println("好好活着")
}
//fall through 下沉,语法执行满足1个case条件之后,再下沉1个case去判断(previouscase || next case)
s := "a"
switch {
case s == "a":
fmt.Println("a")
fallthrough
case s == "b":
fmt.Println("b")
}
//既打印a 也打印 b
}
二、for循环
for循环基本格式
设置i的初始值为0,当i小于10时,每次循环i+1
package main
import (
"fmt"
)
//for循环
func main() {
//基本格式
//i的初始值为0,当i小于10时,每次循环i+1
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
变种
package main
import (
"fmt"
)
func main() {
//变种1
var i = 5
for ; i < 10; i++ {
fmt.Println(i)
}
//变种2
for i := 7; i < 10; i++ {
fmt.Println(i)
}
//变种3
var j = 9
for j < 10 {
fmt.Println(i)
j++
}
}
for rang键值对循环
package main
import (
"fmt"
)
func main() {
//键值对循环 for range
var str1 = "张根"
for i, v := range str1 {
fmt.Printf("索引:%d 值:%c
", i, v)
}
}
break 和 continue
package main
import (
"fmt"
)
func main() {
//当i=5时跳出for循环
for i := 0; i < 10; i++ {
if i == 5 {
break //break跳出for循环
}
fmt.Println(i)
}
//当i=5是忽略本次循环
for i := 0; i < 9; i++ {
if i == 5 {
continue
}
fmt.Println(i)
}
}
break and continue代码跳转
package main
import (
"fmt"
)
func ContinueDemo() {
forloop1:
for i := 0; i < 5; i++ {
// forloop2:
for j := 0; j < 5; j++ {
if i == 2 && j == 2 {
continue forloop1
}
fmt.Printf("%v-%v
", i, j)
}
}
}
func BreakDemo() {
break1:
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
break break1
}
fmt.Printf("%v-%v
", i, j)
}
}
fmt.Println("结束")
}
func main() {
BreakDemo()
ContinueDemo()
}
Go打印乘法表
package main
import (
"fmt"
)
//打印乘法表
func main() {
for i := 1; i < 10; i++ {
for j := 1; j < i; j++ {
fmt.Printf("%d*%d=%d ", j, i, j*i)
}
fmt.Println()
}
}
Goto 跳出多层for循环
package main
import (
"fmt"
)
//跳出多层for循环
func main() {
//设置标志位
var flag = false
for i := 0; i < 10; i++ {
for j := 'A'; j < 'Z'; j++ {
if j == 'C' {
flag = true
break //跳出内层循环
}
fmt.Printf("%v-%c
", i, j)
}
if flag {
break //跳出外层循环
}
}
//使用go to语句跳出多层for循环
for i1 := 0; i1 < 10; i1++ {
for j1 := 'a'; j1 < 'z'; j1++ {
if j1 == 'c' {
goto lable1 //goto 直接跳到定义lable1的位置执行
}
fmt.Printf("%v-%c
", i1, j1)
}
}
lable1: //定义1个 lable
fmt.Println("结束了")
}