if else
基本格式
if 表达式1 {
分支1
} else if 表达式2 {
分支2
} else {
分支3
}
条件中声明的变量,它的作用域为 if 判断中,这样声明可以有效节省内存
if age := 18; age > 35 {
fmt.Println("中年")
} else if age >= 18 {
fmt.Println("青壮年")
} else {
fmt.Println("未成年")
}
fmt.Println(age) //报错,未声明age
for 循环
go 语言只存在一种循环
基本表达式
for 初始语句; 条件表达式; 结束语句 {
循环体
}
同 if 一样,条件中声明的变量,它的作用域只再 for 循环
变种写法
1. 省略初始语句
num := 0
for ; num < 100; num++ {
fmt.Printf("%d\n", num)
}
2.省略结束语句, 在循环体中实现结束语句
num := 0
for num < 100 {
fmt.Printf("%d\n", num)
num++
}
3.死循环
for {
fmt.Println("")
}
for range
用以遍历数组、切片、字符串、map 以及通道 channel。通过 for range 遍历的返回值规律
- 数组,切片,字符串 返回索引和值
- map 返回 键和值
- 通道只返回通道内的值
str := "hello world"
for index, value := range str {
fmt.Printf("index: %d, value: %c\n", index, value)
}
小练习
九九乘法表
for x := 1; x <= 9; x++ {
for y := 1; y <= x; y++ {
fmt.Printf("%d x %d = %d | ", x, y, x*y)
}
fmt.Println()
}
跳出、跳出 for 循环
跳出:break
,跳过 continue
for i := 0; i < 10; i++ {
if i > 5 {
break
}
fmt.Println(i)
}
for i := 0; i < 10; i++ {
if i == 5 {
continue
}
fmt.Println(i)
}
switch case
与 PHP 不同的是 GO 语言的 switch case 分支不需要 使用
break
switch variable {
case value1:
...dosomething
case value2, value3:
...dosomething
case othervalue:
...dosomething
default:
...dosomething
}
swith variable := value; variable {
....
}
goto
执行指定标签后的代码, break 也可以接标签
n := 3
if n == 3 {
goto tag1
}
fmt.Println("step 1")
tag1:
fmt.Println("setp 2")
以上直接输出 step2