流程控制

if语句
定义:由一个布尔表达式后紧跟一个或多个语句组成
1、if...else语句
if i < 10 {
fmt.Println("i<10")
} else if i == 10 {
fmt.Println("i=10")
} else {
fmt.Println("i>10")
}
2、if 嵌套语句
if name == "girl" {
if age == 18 {
fmt.Println("The girl welcomes you.")
}
}

switch 语句
1、直接判断
var i = 0
switch i {
case 0:
case 1:
fmt.Println(1)
case 2:
fmt.Println(2)
default:
fmt.Println("default")
}
2、带初始化语句
names := []string{"Linux", "Golang", "Java", "Python"}
switch name := names[0]; name {
case "Golang":
fmt.Println("Golang")
case "Java":
fmt.Println("Java")
case "Python":
fmt.Println("Python")
default:
fmt.Println("oldboy")
}
3、一个 case 多个可能符合条件的值
var i = 1
switch i {
case 0, 1:
fmt.Println("0 or 1")
case 2:
fmt.Println("2")
default:
fmt.Println("default")
}
4、省略条件表达式应用
var i = 10
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("default")
}
5、fallthrough应用
注意:Go语言 switch 语句每个 case 最后默认带有break,匹配成功后不会自动向下执行其他 case,
而是跳出整个switch,可以使用 fallthrough 语句强制执行后面的 case 代码
var i = 0
switch i {
case 0:
fmt.Println("fallthrough")
fallthrough
case 1:
fmt.Println(1)
case 2:
fmt.Println(2)
default:
fmt.Println("default")
}

for循环
1、方式一
for i := 1; i < 10; i++ {
fmt.Println(i)
}
2、方式二
var i int
for i = 2; i < 100; i++ {
fmt.Println(i)
}

range 循环语句
1、for range 英文字符串,key 值按照+1顺序递增
var str string = "girl"
for k, v := range str {
fmt.Println(k, string(v))
}
2、for range 包含中文的字符串,英文字符 key 值按照+1顺序递增,中文字符 key 值按照+3顺序递增
var str string = "老男孩IT教育,只培养技术精英。"
for k, v := range str {
fmt.Println(k, string(v))
}
3、数组遍历,for range 数组程序会复制对象,key、value 都是从复制品中取出
a) 一维数组遍历
for k, v := range arr {
if k == 0 {
arr[0], arr[1] = 1000, 1000
fmt.Println("修改原数组:", arr)
}
arr[k] = v + 100 // 使用复制品中取出的 value 修改原数组
}
b)多维数组遍历
var arr [2][3]int = [2][3]int{{1, 2, 3}, {2, 4, 6}}
for k1, v1 := range arr {
for k2, v2 := range v1 {
fmt.Printf("%d*%d=%d ", k1+1, k2+1, v2)
}
fmt.Printf(" ")
}
4、slice 遍历
arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
slice := arr[:]
for key, value := range slice {
fmt.Printf("key: %v , value : %v ", key, value)
}
5、map 遍历
m := map[int]string{
1: "oldboy",
2: "Linux",
3: "Golang",
4: "Python",
5: "Java",
6: "DBA",
}
for k, v := range m {
fmt.Printf("%d => %s ", k, v)
}
6、channel 遍历
var ch chan int
ch = make(chan int, 10)
for i := 0; i < 10; i++ {
ch <- i
}
close(ch)
for v := range ch {
fmt.Println(v)
}

循环控制语句
GO 语言支持 goto(慎用)、break、continue 三种循环控制语句,三个语句都可以配合标签( label )使用,
标签名区分大小写,定义后不使用会造成编译错误
原文地址:https://www.cnblogs.com/ywjfx/p/10387127.html